Hallo,
ich habe folgendes Problem:
Meine Main-class erzeugt ein Objekt vom Typ GraphicOutput.
Dieses erstellt ein JFrame und legt darauf ein Objekt vom Typ ZeichenPanel ab (siehe Code).
Nun soll das Rechteck beim Programmstart gezeichnet, und später in regelmäßigen Abständen neugezeichnet werden (zwecks Positionsänderung).
Allerdings wird repaint erst aufgerufen, sobald ich die Größe des Fensters ändere.
Dann habe ich gelesen, dass bei Swing-Komponenten repaint nur im gleichen Thread aufgerufen werden kann, aber das sollte doch hier eigentlich kein Problem darstellen, da ja alle Klassen im selben Thread ausgführt werden.
Wo liegt mein Fehler?
MfG
infolana
(unwichtiger Code weggelassen)
ich habe folgendes Problem:
Meine Main-class erzeugt ein Objekt vom Typ GraphicOutput.
Dieses erstellt ein JFrame und legt darauf ein Objekt vom Typ ZeichenPanel ab (siehe Code).
Nun soll das Rechteck beim Programmstart gezeichnet, und später in regelmäßigen Abständen neugezeichnet werden (zwecks Positionsänderung).
Allerdings wird repaint erst aufgerufen, sobald ich die Größe des Fensters ändere.
Dann habe ich gelesen, dass bei Swing-Komponenten repaint nur im gleichen Thread aufgerufen werden kann, aber das sollte doch hier eigentlich kein Problem darstellen, da ja alle Klassen im selben Thread ausgführt werden.
Wo liegt mein Fehler?
MfG
infolana
(unwichtiger Code weggelassen)
Code:
class Main {
public static void main(String[] args) {
//irgendwas
GraphicOutput go = new GraphicOutput();
go.zp.repaint();
}
}
Code:
public class GraphicOutput{
private JFrame frame;
public ZeichenPanel zp;
public GraphicOutput() {
/* Create new frame*/
frame = new JFrame(title);
frame.setVisible(true);
//......
zp = new ZeichenPanel();
frame.add(zp);
}
}
Code:
class ZeichenPanel extends JPanel {
protected void paintComponent( Graphics g ) {
System.out.println("repaint()");
super.paintComponent(g);
//........
Graphics2D g2 = (Graphics2D) g;
g2.draw(new RoundRectangle2D.Double( 10, 10, 50, 70, 20, 20));
}
}