Ein Objekt zeichnen mit getGraphics() ohne Verlängerung JFrame
Wie kann ich ein Objekt zeichnen, ohne eine Klasse (die sich JFrame
)? Ich fand getGraphics
Methode, aber Sie nicht ziehen Sie das Objekt.
import javax.swing.*;
import java.awt.*;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setSize(600, 400);
JPanel panel = new JPanel();
frame.add(panel);
Graphics g = panel.getGraphics();
g.setColor(Color.BLUE);
g.fillRect(0, 0, 100, 100);
}
}
InformationsquelleAutor | 2013-04-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wollen, um zu ändern, wie die Komponente gezeichnet wird (das Sie hinzufügen, Rechtecke), die Sie benötigen, neu zu definieren
paintComponent()
in dieser Komponente. In Ihrem code, den Sie verwendengetGraphics()
.Sollte man das auch nicht nennen
getGraphics()
auf eine Komponente. Alle Gemälde, die Sie tun (Graphics
zurückgegeben) werden temporär und gehen verloren, das nächste mal Swing feststellt, dass eine Komponente muss neu lackiert werden.Stattdessen sollten Sie überschreiben die
paintComponent(Graphics)
Methode (derJComponent
oderJPanel
), und tun das Gemälde in diese Methode, mit derGraphics
Objekt erhielt als argument.Überprüfen dieser link für die weitere Lektüre.
Unten ist dein code korrigiert.
Andere version, funktioniert die genau das gleiche, aber vielleicht klarer an Sie:
InformationsquelleAutor acdcjunior
Haben Sie zum überschreiben der paintComponent-Methode in der JPanel Klasse. So erstellen Sie eine Klasse erweitert JPanel und überschreiben paintComponent-Methode in der Unterklasse
Können Sie erstellen statische innere Klasse erweitert JPanel und dann beim anklicken der Schaltfläche, die Sie erstellen, die diese statische Instanz der Klasse dann können Sie anrufen instanceName.repaint () - Methode
InformationsquelleAutor olyanren