2014-02-19 39 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:请参阅编辑回答,不用担心,没有任何不便之处。 –