Hallo,
ich habe hier mal ein Beispiel, wo ich aus einem Panel, die repaint() Methode einer eigenen, leeren GlassPane aufrufe. Dies führt zu einer unendliche repaint() Schleife.
MainFrame:
Panel:
GlassPane:
Meine Frage ist, was passiert hier und wie kann ich den Loop unterbrechen?
Vielen Dank im Voraus.
Grüße,
Andreas
ich habe hier mal ein Beispiel, wo ich aus einem Panel, die repaint() Methode einer eigenen, leeren GlassPane aufrufe. Dies führt zu einer unendliche repaint() Schleife.
MainFrame:
Java:
public class Test extends JFrame {
/**
* Launch the application
* @param args
*/
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Test frame = new Test();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame
*/
public Test() {
super();
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
TestGlassPane testGlassPane = new TestGlassPane();
TestPanel testPanel = new TestPanel(testGlassPane);
add(testPanel);
this.setGlassPane(testGlassPane);
this.getGlassPane().setVisible(true);
testPanel.repaint();
}
}
Panel:
Java:
public class TestPanel extends JPanel {
JComponent glassPane;
public TestPanel(JComponent glassPane) {
this.glassPane = glassPane;
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
this.glassPane.repaint();
}
}
GlassPane:
Java:
public class TestGlassPane extends JComponent {
}
Meine Frage ist, was passiert hier und wie kann ich den Loop unterbrechen?
Vielen Dank im Voraus.
Grüße,
Andreas