2012-04-22 57 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