GEmaltes BufferedImage löschen

Bitte aktiviere JavaScript!
Guten Tag zusammen,

in diesem Ausschnitt des Programms versuche ich je nach Knopfdruck Rechtecke in ein JPanel zu malen. Je nach Knopfdruck wird entweder ein roters oder ein schwarzes Rechteck gemalt oder ein BufferedIamge gemalt. Dieses funktioniert auch einwandfrei.
Wenn ich nun einen anderen Knopf drücke, sollen alle gemalten Sachen (rot, schwarz, BufferedImage) verschwinden. Solange nur die Rechtecke gemalt wurden funktioniert das Überschreiben der Methode auch einwandfrei. Allerdings funktioniert es nicht mehr wenn das BufferedImage auch gemalt wurde. Durch das BufferedImage können die anderen Rechtecke auch nicht mehr entfernt werden. Es werden allerdings keine Errors angezeigt und das Programm geht auch in diesen Codeabschnitt rein.

Kann mir bitte jemand helfen eine Möglichkeit herauszufinden, um das BufferedImage wieder zu löschen?

Java:
@Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        if(rot == true) {
            g.setColor(Color.red);
            g.fillRect(100, 100, 300, 300);
        }
        if(schwarz == true) {
            g.setColor(Color.black);
            g.fillRect(500, 100, 300, 300);
        }
        if(image== true) {
            g.drawImage(img,266,500,null);
        }
        else if(loeschen == true) {

            rot = false;
            schwarz = false;
            image= false;
            loeschen = false;
            super.paintComponent(g);
       
       
    }
Vielen Dank!
 
A

Anzeige




Vielleicht hilft dir unser Kurs hier weiter —> (hier klicken)
1. Wieso zeichnest Du (erst), wenn Du doch eigentlich nichts zeichnen (löschen) willst?
2. if (x == true) ist doppelt gemoppelt. if (x) reicht.
 
Also ich sehe zwei Dinge:
A}) das if loeschen ist ein Else If, d.h. es wird nur erreicht, wenn die vorherige Bedingung falsch war. Also wenn ein Image gemalt werden soll, dann wird das nie ausgeführt.

B) Logik: das wird erst beim zweiten Aufruf gelöscht sein, da du erst malst und dann das löschen machst. Ich würde erst das löschen machen und dann das Malen.

Glen Code Hinweis: wieso ist das löschen in der Paint. Funktion? Das hat ja mit dem Malen nichts zu tun, sondern ist eine Zustandsänderung. Du kannst die Werte doch auf false setzen, wo du löschen auf true setzt. Dann brauchst du evtl. auch keine loeschen Variable mehr.
 
Danke für die Antworten. In dem Fall hat es gereicht aus dem else if ein if zu machen. Nochmal Danke!
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben