Ein Objekt mit getGraphics () zeichnen, ohne JFrame zu erweitern

8

Wie kann ich ein Objekt ohne eine Klasse zeichnen (die JFrame erweitert)? Ich fand getGraphics Methode, aber es zeichnet das Objekt nicht.

%Vor%     
acdcjunior 13.04.2013, 10:11
quelle

3 Antworten

20

Wenn Sie die Art ändern möchten, wie Ihre Komponente gezeichnet wird (Sie fügen Rechtecke hinzu), müssen Sie paintComponent() in dieser Komponente neu definieren. In Ihrem Code verwenden Sie getGraphics() .

Sie sollten getGraphics() nicht für eine Komponente aufrufen. Jedes Gemälde, das du machst (zu Graphics ), ist vorübergehend und wird beim nächsten Mal verloren sein, wenn Swing feststellt, dass eine Komponente neu gestrichen werden muss.

Stattdessen sollten Sie die paintComponent(Graphics) -Methode (von JComponent oder JPanel ) überschreiben und das Zeichnen in dieser Methode mit dem Graphics -Objekt durchführen, das als Argument empfangen wurde.

Überprüfen Sie diesen Link , um ihn weiter zu lesen.

Unten ist Ihr Code korrigiert.

%Vor%

Eine andere Version, macht das genau dasselbe , aber vielleicht ist es für Sie klarer:

%Vor%     
acdcjunior 13.04.2013, 18:11
quelle
4

Sie müssen die paintComponent-Methode in der JPanel-Klasse überschreiben. Sie sollten also eine Klasse erstellen, die JPanel erweitert und die paintComponent-Methode in der Unterklasse

überschreibt     
olyanren 13.04.2013 10:14
quelle
2

java.awt.image.BufferedImage

Warum nicht einfach eine Instanz von java.awt.image.BufferedImage verwenden? z.B.

%Vor%     
Paul Vargas 01.02.2015 09:36
quelle