JPanel Grafik löschen und neu streichen?

8

Ich habe eine JPanel mit einer paintComponent() Funktion. Ich werde es einmal aufrufen, und wenn der Benutzer dann auf ein anderes JButton klickt, setze ich ein Flag und möchte diese Funktion erneut aufrufen, da es nach dem Setzen des Flags etwas anders geht.

Hier ist was ich mich frage: Wie lösche ich die vorhandenen Sachen von paintComponent ? Und um neu zu zeichnen, rufe ich einfach paintComponent erneut an?

Momentan versuche ich Folgendes:

%Vor%

In der Farbkomponente mache ich Sachen wie:

%Vor%

Aber beim Testen scheint etwas mit dem, was ich mache, nicht in Ordnung zu sein.

Danke für jede Hilfe.

    
JDS 01.08.2011, 18:36
quelle

4 Antworten

14

Wenn Sie eine Eigenschaft des Panels ändern, müssen Sie Folgendes aufrufen:

%Vor%

, damit die Komponente neu gezeichnet wird.

Dann sollte die erste Anweisung in der paintComponent () -Methode lauten:

%Vor%

Dies wird den Hintergrund malen, so dass Sie jetzt Ihr eigenes Bild malen können.

Wenn Sie weitere Hilfe benötigen, posten Sie Ihr SSCCE , das das Problem veranschaulicht.

    
camickr 01.08.2011, 19:01
quelle
13

Um alle zuvor gezeichneten Grafiken zu löschen, rufen Sie g.clearRect(0, 0, getWidth(), getHeight()) .

    
mre 01.08.2011 18:58
quelle
2

Erstens, warum nicht eine Enum anstelle eines booleschen verwenden?

%Vor%

Können Sie in Bezug auf Ihr Problem meine Kommentare in Ihrer Frage beantworten?

    
Amir Afghani 01.08.2011 18:46
quelle
2

Ich würde vorschlagen, revalidate () aufzurufen; statt neu zu streichen (). revalidate () muss beim Ändern der Größe / des Layouts oder beim Hinzufügen / Entfernen von Objekten auf Ihrem jpanel aufgerufen werden und aktualisiert alle untergeordneten Elemente. Soweit ich das beurteilen kann, verwenden Sie immer noch das gleiche Malobjekt, aber ändern Sie das Layout.

    
John Snow 01.08.2011 20:40
quelle