Ho un JPanel all'interno di una cornice. I contenuti di JPanel dovrebbero essere aggiornati con ogni chiamata a paintComponent
(che è chiamata da repaint()
), ma quando lo faccio come di seguito, vedo solo una finestra bianca. (scusate il rientro straziati, Eclipse non tutti i tipi di cose strane con le schede.)Ridipingere un JPanel all'interno di una cornice
private static void handleGUI()
{
JFrame frame = new JFrame("Animation");
frame.setPreferredSize(new Dimension(100, 100));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Board b = new Board();
frame.getContentPane().add(b);
frame.pack();
frame.setVisible(true);
while(true)
{
System.out.println("Repainting panel");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
b.repaint();
}
}
public class Board extends JPanel
{
public Board() { t=0; }
private int t;
public void paintComponent(Graphics g)
{
super.paintComponent(g);
++t;
/* Variables snipped */
g.setColor(Color.white);
g.drawOval(0, 0, width, height);
BufferedImage image = ImageIO.read(new File(imagePath));
g.drawImage(image, x(t), y(t));
/* There's some more image and rectangle drawing ahead */
}
}
In realtà, Eclipse fa tutti i tipi di cose interessanti con le schede. :-) Basta premere CTRL-SHIFT-F per formattare la fonte automaticamente. Produrrà una formattazione e una rientranza coerenti per te, alleviandoti dall'onere di farlo da solo. – harschware
quali sono i valori per x (0), y (0)? L'immagine potrebbe essere al di fuori del tuo pannello. Lo esegui in un debugger? Il codice può generare un'eccezione nel thread della GUI se l'immagine non viene trovata. – josefx