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.
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.
Um alle zuvor gezeichneten Grafiken zu löschen, rufen Sie g.clearRect(0, 0, getWidth(), getHeight())
.
Erstens, warum nicht eine Enum anstelle eines booleschen verwenden?
%Vor%Können Sie in Bezug auf Ihr Problem meine Kommentare in Ihrer Frage beantworten?
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.
Tags und Links java swing graphics jpanel paintcomponent