2012-04-22 25 views
0

我想要创建一个循环,它用存储在ArrayList中的BufferedImages更改JButton的图像图标。当我尝试时,它只是将其设置为最后一张图像,而其余部分则跳过。相关的代码是这样的:Java:更改循环中按钮的图像图标(用于幻灯片)

private void playButtonActionPerformed(java.awt.event.ActionEvent evt) {           
    for (int x = 0; x < myPhotos.size(); x++) { 
     icon.setImage(myPhotos.get(x)); 
     displayButton.setIcon(icon); 
     try { 
      Thread.sleep(1000); 
     } catch (InterruptedException ex) { 
      Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
} 

myPhotos是缓冲图像的数组列表。

图标是一个ImageIcon

displayButton是一个JButton。

我在想这个问题可能是JButton的图标只能设置一次,我希望你们其中一个聪明到足以知道如何解决这个问题。

+0

不要忘记看看JButton的API(它将链接到AbstractButton的API)。如果你只能设置一次JButton的图标,那么API会这样说,而不是。对你来说幸运@AKJ是“足够聪明”,1+给AKJ的答案。 – 2012-04-22 20:35:17

+0

我创建了后退和前进按钮来浏览图像,图像变化非常缓慢。我认为这实际上是为什么幻灯片不能按照我预期的方式工作。对我来说幸运的是我“够聪明”。 – 2012-04-22 21:07:07

+0

是的,幸运的你! :) – 2012-04-22 21:12:00

回答

1

不要在这里使用睡眠,因为你正在阻止绘画。您应该使用Swing的定时器来执行重复性任务,即在固定间隔后更改图标。

+0

谢谢,我会试试这个。 – 2012-04-22 21:08:05