프레임 안에 JPanel이 있습니다. JPanel의 내용은 paintComponent
(repaint()
이 호출 됨)을 호출 할 때마다 업데이트 될 예정이지만, 아래에 나와있는 것처럼 흰색 창이 나타납니다. 은 (이클립스 탭 이상한 물건의 모든 종류의 수행, 난도질 들여 쓰기를 용서하시기 바랍니다.)프레임 안의 JPanel 다시 칠하기
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 */
}
}
실제로 이클립스는 모든 종류의 멋진 탭을 제공합니다. :-) CTRL-SHIFT-F를 눌러 소스를 자동으로 포맷하십시오. 일관된 형식 및 들여 쓰기가 만들어 지므로 직접 수행하는 부담을 덜어줍니다. – harschware
x (0), y (0)의 값은 무엇입니까? 이미지가 패널 외부에있을 수 있습니다. 디버거에서 실행합니까? 이미지를 찾을 수없는 경우 코드가 GUI 스레드에서 예외를 throw 할 수 있습니다. – josefx