JPanel methode repaint() funktioniert nicht wie erwartet

lonol15

Mitglied
JPanel ist eine abstrakte Klasse die ich im parameter der methode add() von JFrame übergebe.
Nun kann man zum Beispiel in die Methode von JPanel schreiben:
Java:
g.drawRect(a,b,c,d);
(a,b,c und d sind int werte)

Nun mein Problem:

Wenn ich jetzt JPanel(also natürlich nicht direkt JPanel sondern eine eigene Klasse).repaint() aufrufe, sollte eigentlich das alte Rechteck da bleiben und das neue drüber gezeichnet werden. Das ist aber nicht so.

Irgendwelche Vorschläge?
 
Zuletzt bearbeitet:
Nein, jedes mal wenn repaint aufgerufen wird, wird alles vorherige gelöscht. Du musst die Position des alten Rechtecks speichern, damit du es beim nächsten Aufruf von paintComponent() wieder zeichnen kannst.
 
ich würde eine List anlegen mit Int Arrays

bei jedem Rechteck was dazukommrt ein neuen eintrag erzeugen

und in der Paint Methode wird die Liste abgeklappert und die rechtecke neu gezeichnet
 
Man braucht dafür keine int-Arrays, dafür gibt es die Klasse java.awt.Rectangle. Die ist in der Lage die Koordinaten sowie Breite und Höhe zu verwalten.
 
Ja, aber dann musste ich tausendmal g.fillRect() schreiben.
Ich will das nur einmal schreiben aber fünf rechtecke haben.
Geht das irgendwie?
 
Zurück