jpanel不绘制缓冲图像,但缓冲图像可以创建为文件

时间:2011-02-03 16:15:09

标签: java swing paintcomponent concurrency

嗨我有一个jpanel可以借鉴。从这个jpanel我制作bufferedimages并将它们安全地保存到链接列表中。按下按钮我想要动画这个bufferedimages(一个接一个地播放) 问题是jpanel不显示缓冲的图像但是当我使用ImageIO.write来保护磁盘上的bufferedimages时,我得到了我想要动画的所有图片。请帮帮我。

这是我的代码:

public void run(){
 for(int i=0;i`<`cm.animationListe.size();i++){
      b= cm.animationListe.get(i);

      try {
            ImageIO.write( b, "png", new File( "c:/java/circle"+i+".png" ) );

        } catch (IOException e1) {
            e1.printStackTrace();
        }
     try {
            Thread.sleep(1000);
             repaint();

        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }}
 animation = false;
}

public void paintComponent(Graphics g){
  super.paintComponent(g);
  if(animation){
          g.drawImage(b,0, 0,null);
      } 
}

1 个答案:

答案 0 :(得分:1)

Thread.sleep()会导致GUI冻结,因此无法自行重绘。

要制作动画,您需要使用Swing Timer