Java:更改循环中按钮的图像图标(用于幻灯片放映)

Java:更改循环中按钮的图像图标(用于幻灯片放映),java,slideshow,Java,Slideshow,我想创建一个循环,用存储在ArrayList中的BuffereImage更改JButton的图像图标。当我尝试时,它只是将其设置为最后一个图像,而跳过所有其他图像。相关代码如下: private void playButtonActionPerformed(java.awt.event.ActionEvent evt) { for (int x = 0; x < myPhotos.size();

我想创建一个循环,用存储在ArrayList中的BuffereImage更改JButton的图像图标。当我尝试时,它只是将其设置为最后一个图像,而跳过所有其他图像。相关代码如下:

 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);
        }
    }
} 
private void playButtonActionPerformed(java.awt.event.ActionEvent evt){
对于(int x=0;x
myPhotos是缓冲图像的数组列表

图标是一个图像图标

displayButton是一个JButton


我认为问题可能是一个按钮的图标只能设置一次,我希望你们中的一位足够聪明,知道如何解决这个问题。

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

不要忘记查看JButton的API(它会将您链接到AbstractButton的API)。如果您只能设置JButton的图标一次,那么API会这样说,但它不会。幸运的是@AKJ“足够聪明”,1+到AKJ的答案。我创建了后退和前进按钮来浏览图像,图像变化非常缓慢。我想这就是为什么幻灯片没有按我预期的方式播放。幸运的是我“足够聪明”。谢谢,我会试试这个。