大家好,我们试图在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)中看到的图像。 –