Auf Canvas zeichnen nur über boolean-Abfragen?

Gromit

Mitglied
Hallo,

ich möchte auf die Canvas eines JPanels zeichnen. Je nach Aufruf von außen, sollen verschiedene Dinge gezeichnet werden. Gibt es neben meiner Lösung eine besserer (elegantere?) Alternative?

Java:
public class MyPanel extends JPanel {

    public boolean clear = false;

    ...

    public void clear() {
        clear = true;
        repaint();
    }

   ...

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        ...

        if (clear) {
            g.fillRect(0, 0, getWidth(), getHeight());
            clear = false;
        }
    }

}
 
Zuletzt bearbeitet:
Java:
interface PaintThing
{
    void paintOn(Graphics g);
}


class ThePanel extends JPanel
{
    private List<PaintThing> paintThings = ... // und add/remove-methoden

    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        for (PaintThing p : paintThings) p.paintOn(g);
    }

}
 
Dann brauchen aber die Klassen, die PaintThing implementieren doch auch boolean-Werte, mit denen festgelegt wird, ob bei Aufruf von paintOn gezeichnet werden soll, oder nicht!?
 
Der Ansatz mit den Flags ist imho nicht verkehrt. Optional kannst du ja auch, wie Marco beschrieben hat, Einträge aus der Liste löschen bzw. hinzufügen
 
Das, was ich beschrieben habe, war nicht die Grundlage eines Cutting-Edge Enterprise Architecture Development Frameworks 😎 Sollte nur ein Beispiel sein 😳
 
@Marco13: Mein Einwand sollte auch nicht als Aufforderung an dich verstanden werden, ein solches zu schreiben. ;-)

Danke für eure Hilfe. Da ich nur eine Q&D-Lösung brauche, passt das schon. 🙂
 

Zurück
Oben