Hallo,
Ich arbeite mich gerade in die GUI Programmierung ein.
Hier gehts um ein Beispielprogramm, bei dem ein Rechteck auf ein JPanel gezeichnet wird. Der Code steht unten.
Soweit verstehe ich davon alles. Mir ist nur nicht klar, wie bzw. warum die "paintComponent" Methode aus der Klasse "MeinZeichenPanel" aufgerufen wird?!
Die ganze Action spielt sich ja in der "EinfacheGui" Klasse ab. Dort wird das Frame und Panel erstellt usw.
Aber dort wird ja nirgends die "paintComponent" Methode aus der anderen Klasse aufgerufen. Zumindest verstehe ich nicht, wie sie dort aufgerufen wird (Da das Rechteck ja gezeichnet wird, muss sie aufgerufen werden
).
Ich weiß, dass ein Objekt der Klasse "MeinZeichenPanel" erstellt wird, aber das ruft doch nicht die "paintComponent" Methode auf?! ???:L
Ich arbeite mich gerade in die GUI Programmierung ein.
Hier gehts um ein Beispielprogramm, bei dem ein Rechteck auf ein JPanel gezeichnet wird. Der Code steht unten.
Soweit verstehe ich davon alles. Mir ist nur nicht klar, wie bzw. warum die "paintComponent" Methode aus der Klasse "MeinZeichenPanel" aufgerufen wird?!
Die ganze Action spielt sich ja in der "EinfacheGui" Klasse ab. Dort wird das Frame und Panel erstellt usw.
Aber dort wird ja nirgends die "paintComponent" Methode aus der anderen Klasse aufgerufen. Zumindest verstehe ich nicht, wie sie dort aufgerufen wird (Da das Rechteck ja gezeichnet wird, muss sie aufgerufen werden
Ich weiß, dass ein Objekt der Klasse "MeinZeichenPanel" erstellt wird, aber das ruft doch nicht die "paintComponent" Methode auf?! ???:L
Java:
import java.awt.BorderLayout;
import javax.swing.JFrame;
public class EinfacheGui {
JFrame frame;
public static void main(String[] args) {
EinfacheGui gui = new EinfacheGui();
gui.los();
}
public void los() {
frame = new JFrame();
frame.setVisible(true);
frame.setSize(900, 900);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MeinZeichenPanel zeichenPanel = new MeinZeichenPanel();
frame.getContentPane().add(BorderLayout.CENTER, zeichenPanel);
}
}
Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.geom.Rectangle2D.Double;
import javax.swing.JPanel;
public class MeinZeichenPanel extends JPanel {
public void paintComponent(Graphics g) {
Graphics2D g2d= (Graphics2D) g;
Double rectangle = new Rectangle2D.Double(200, 120, 70, 30);
g2d.setPaint(Color.red);
g2d.fill(rectangle);
}
}