为什么JPanel只重画一次?

时间:2013-06-10 19:53:33

标签: java swing

我想创建窗口,3秒后图像会自动更改。 这是我的代码:

JFrame frame=new JFrame();
pan pane= new pan();
frame.add(pane);
frame.setBounds(100, 100, 500, 500);
frame.setVisible(true);



    try{
        for(int i=0;i<returnedArray.size();i++){                
            pane.img=returnedArray.get(i).getFrontImage();
            Thread.sleep(3000);     
            pane.repaint();
        }
    }catch(InterruptedException e){
        e.printStackTrace();
    }


class pan extends JPanel{
    public Image img; 

     public void paint(Graphics g) {
          g.drawImage( img, 0, 0, null);
     }
}

...但我一直看到最后一张照片:(

我认为JVM可能正在改进我的代码吗?

我该如何避免这种情况? 也许我做错了?

我将非常感谢任何线索:)

1 个答案:

答案 0 :(得分:1)

你的问题可能是for循环中的这一行:

pane.img=returnedArray.get(2).getFrontImage();

总是选择相同的图像?除此之外,您应该使用注释中指出的Timer而不是使用Thread.sleep