Zeichnen außerhalb der paint-methode

Q-Dog

Mitglied
Guten Morgen,

ich wollte mal fragen, ob es möglich ist, auch außerhalb der paint()-Methode etwas zu zeichnen, oder ob dies nur innerhalb dieser geht.
Also anstatt:
Java:
    public void paint(Graphics g) {
        Graphics2D graphics2D = (Graphics2D) g;
        graphics2D.draw(new Line2D.Double(0, 0, 200, 200));
    }

z.B.:
Java:
    public void drawLine(int x1, int y1, int x2, int y2) {
        graphics2D = (Graphics2D) this.getGraphics();
        graphics2D.draw(new Line2D.Double(x1, y1, x2, y2));
    }

Denn irgendwie funktioniert dies nicht, deshalb die allgemeine Frage, ob man nur in der paint-Methode zeichnen kann.


Gruß Q-Dog
 
Erstmal solltest du (wenn du Swing verwendest) nicht paint() überschreiben, sondern paintComponent().
Dann kannst du natürlich beliebige Methoden aus paintComponent() heraus aufrufen, aber gemalt wird grundsätzlich nur dort.
Hier gibt es mehr Information:
Painting in AWT and Swing
 
Hallo tfa, vielen Dank für deine Antwort und den Tipp mit der paintComponent-Methode.

Wenn ich jetzt aber mal ein Rechteck und mal eine Linie zeichnen möchte, wie würde ich dies dann machen? Denn ich kann der paintComponent-Methode ja kein Parameter (z.B. ein Enum) übergeben.


Gruß Q-Dog
 
Ne, die Parameter müssen von woanders kommen. Zum Beispiel über Member-Variablen deiner Klasse, in der paintComponent implementiert ist.
 
Java:
public void paintComponent(Graphics g) {
    if (drawRect) {
        ... rechteck zeichnen
    } else {
        ... was anderes zeichnen
    }
}
drawRect wäre dann ne Variable deiner klasse
 

Zurück
Oben