2010-06-07 61 views

回答

4
import java.util.*; 

class MyTimer extends TimerTask 
{ 
    public void run() 
    { 
    //change image 
    } 
} 

然后在你的主,你可以安排任务:

Timer t = new Timer(); 
t.schedule(new MyTimer(), 0, 5000); 

第一个数字是初始延迟,第二个是您的TimerTask:5000的run()的呼叫之间的时间为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线程mantaining兼容性,避免奇怪的同步问题上合作了。

+0

你推荐'java.util.Timer',不'javax.swing.Timer'。 – BalusC 2010-06-07 13:17:40

+0

我多次使用它来完成类似于这个任务的任务,并且它总是能够正常工作。顺便说一下,如果您更喜欢摆动Timer,那么您只需修改具有Swing样式__ActionListener__的方法来实现您的背景更改。 – Jack 2010-06-07 13:21:08

+1

当摆动时,始终使用javax.swing.Timer – Xorty 2010-06-07 13:22:31

相关问题