2010-06-07 52 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

相關問題