大家好,我們試圖在JFrame中製作一個簡單的動畫。我們有一個甲板13個圖像(從少到多卡),我們希望有休眠功能來實現它在我們的代碼,這樣的事情在Java中製作快速動畫
setIcon(pic1)
sleep
setIcon(pic2)
sleep
etc...
所以它會看起來像甲板越來越大,我們曾使用函數thread.sleep但它不起作用。任何幫助?
謝謝。
大家好,我們試圖在JFrame中製作一個簡單的動畫。我們有一個甲板13個圖像(從少到多卡),我們希望有休眠功能來實現它在我們的代碼,這樣的事情在Java中製作快速動畫
setIcon(pic1)
sleep
setIcon(pic2)
sleep
etc...
所以它會看起來像甲板越來越大,我們曾使用函數thread.sleep但它不起作用。任何幫助?
謝謝。
在這個問題上搜索此網站,你會看到爲什麼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。但是請注意,在搜索時,不要尋找你的問題的確切重複,因爲這通常不存在,而是涉及類似概念的問題,然後借用其解決方案中顯示的概念。
祝你好運!
我沒有一個ImageIcons數組,我有13個圖像和一個按鈕,我想做一個外部函數(Out of the Button事件),它使得每秒出現13個圖像,並將它們疊加在一起另一個(在同一個地方)。我不知道我是否清楚自己。 對不便和謝謝。 – user3329320
@ user3329320:請參閱編輯回答,不用擔心,沒有任何不便之處。 –
*「有什麼幫助?」*任何努力的跡象? 1)爲了更快地獲得更好的幫助,請發佈[MCTaRE](http://stackoverflow.com/help/mcve)(最小完整測試和可讀示例)。 2)獲取圖像的一種方法是通過熱鏈接到[本答案](http://stackoverflow.com/a/19209651/418556)中看到的圖像。 –