如何每隔n秒调用一次方法?
我希望每隔n秒用Swing和CardLayout进行幻灯片放映 它必须显示一个不同的图像调用不同的方法
答案 0 :(得分:4)
import java.util.*;
class MyTimer extends TimerTask
{
public void run()
{
//change image
}
}
然后在你的主要任务中安排任务:
Timer t = new Timer();
t.schedule(new MyTimer(), 0, 5000);
第一个数字是初始延迟,第二个是您run()
:5000的TimerTask
之间的时间是5秒。
正如BalusC指出的那样,你通常会在AWT事件线程上发送挥杆变化。在这个简单的原因中,它不应该在从外部线程更改背景时产生问题,在任何情况下都应该使用
public static void SwingUtilities.invokeLater(Runnable whatToExecute)
在正确的主题上发送您的更改。
如果您更喜欢BalusC方法,只需使用ActionListener
:
public void BackgroundChange implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
//change bg
}
}
javax.swing.Timer t = new javax.swing.Timer(5000, new BackgroundChange());
它们都提供相同的功能,但是后来的这个功能已经准备好与Swing线程一起工作,保持兼容性并避免奇怪的同步问题。
答案 1 :(得分:4)
由于您使用的是Swing,因此您希望使用javax.swing.Timer
。这是一个Sun tutorial on the subject。
答案 2 :(得分:0)
对于Swing应用程序中的任何琐碎动画,请查看Trident:http://kenai.com/projects/trident/pages/Home