Wie kann ich ein Objekt ohne eine Klasse zeichnen (die JFrame
erweitert)? Ich fand getGraphics
Methode, aber es zeichnet das Objekt nicht.
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% Warum nicht einfach eine Instanz von java.awt.image.BufferedImage
verwenden? z.B.
Tags und Links java swing paintcomponent graphics2d