2014-02-19 41 views
-1

大家好,我們試圖在JFrame中製作一個簡單的動畫。我們有一個甲板13個圖像(從少到多卡),我們希望有休眠功能來實現它在我們的代碼,這樣的事情在Java中製作快速動畫

setIcon(pic1) 
sleep 
setIcon(pic2) 
sleep 
etc... 

所以它會看起來像甲板越來越大,我們曾使用函數thread.sleep但它不起作用。任何幫助?

謝謝。

+0

*「有什麼幫助?」*任何努力的跡象? 1)爲了更快地獲得更好的幫助,請發佈[MCTaRE](http://stackoverflow.com/help/mcve)(最小完整測試和可讀示例)。 2)獲取圖像的一種方法是通過熱鏈接到[本答案](http://stackoverflow.com/a/19209651/418556)中看到的圖像。 –

回答

2

在這個問題上搜索此網站,你會看到爲什麼Thread.sleep(...)在Swing事件線程上調用時不好。你也會看到你應該使用Swing Timer。

例如,請在我的回答here中查看我的代碼。

在你的情況,假設ImageIcons的數組,你可以嘗試這樣的:

new Timer(timerDelay, new ActionListener() { 
    private int iconIndex = 0; 

    public void actionPerformed(ActionEvent evt) { 
    if (iconIndex < iconArray.length) { 
     label.setIcon(iconArray[iconIndex]); 
     iconIndex++; 
    } else { 
     ((Timer)evt.getSource()).stop(); // stop the timer 
    } 
    } 
}).start(); 

對於血淋淋的細節,請查看Swing Timer Tutorial


編輯
在評論 幽州:

,我有13張圖片和一個按鈕,我想打一個外部函數(超出我沒有ImageIcons的數組Button事件),每秒鐘在其中出現13張圖像,將它們疊加在另一個上面(在同一個地方)。

沒問題 - 然後製作一個Icon或ArrayList<Icon>的數組,並將ImageIcons填充到那裏。無論如何,我上面的代碼並不是爲了剪切和粘貼,而是爲了給你一個解決方案的一般概念,因爲這些想法可以擴展到你的問題。您現在需要了解這個想法以及您可以從Swing Timer教程中收集的內容(同樣可以找到該鏈接here),並嘗試爲自己的解決方案編寫代碼。也請在這個網站上搜索Swing Timer和動畫這個主題,因爲這個問題被問到lot。但是請注意,在搜索時,不要尋找你的問題的確切重複,因爲這通常不存在,而是涉及類似概念的問題,然後借用其解決方案中顯示的概念。

祝你好運!

+0

我沒有一個ImageIcons數組,我有13個圖像和一個按鈕,我想做一個外部函數(Out of the Button事件),它使得每秒出現13個圖像,並將它們疊加在一起另一個(在同一個地方)。我不知道我是否清楚自己。 對不便和謝謝。 – user3329320

+0

@ user3329320:請參閱編輯回答,不用擔心,沒有任何不便之處。 –