2012-02-24 99 views
-2

我需要做的是傳遞一個參考部件的計時器的Java定時器與Swing組件

Timer timertest = new Timer(12000, new Timer()); 
............. 
{ 
    JButton button = new JButton("test"); 
    //How can I pass button reference in the Timer()? 
    //timertest.start(button); 
    timertest.start(); 
} 
............. 
class Timer implements ActionListener 
{ 
    public void actionPerformed(ActionEvent event) 
    { 
     System.out.println("button: "+button.getText()); 
     timertest.stop(); 
    } 
} 

如何傳遞的定時器()按鈕參考?

+0

你解決這個問題,就像你會通過在Java中的任何引用無論是Swing或非GUI。例如,爲什麼不將該按鈕設置爲類字段,並通過構造函數或setter方法參數將引用傳遞給Timer對象? – 2012-02-24 17:12:30

+2

你也想重命名你的「Timer」類,因爲核心Java中已經有一個Timer類(實際上是其中的兩個),並且命名類同樣是令人困惑的。 – 2012-02-24 17:23:41

+0

只是爲了澄清:你的變量timertest是你自己的Timer類的一個實例,而不是java.util.Timer? – steffinchen 2012-02-24 17:37:51

回答

-1

我建議你編寫自己的Timer子類(class MyTimer extends Timer),然後你可以在構造函數或自己的方法中傳遞按鈕的引用。

例如:

class MyTimer extends Timer{ 
    public void start(JButton button){ 
    // use the button reference 
    super.start(); 
} 
+0

倒票。完全沒有理由這樣做,這是一個壞主意,因爲沒有Timer的行爲被覆蓋。更重要的是,他已經爲Timer的ActionListener創建了一個類,這就是持有對JButton引用所需的全部內容。 – 2012-02-24 17:24:49

+1

現在我再次看了這個問題幾分鐘後,我意識到他正在談論把參考資料傳遞給他自己的班級。我想他是在談論java.util.Timer ...所以,是的,我同意,我的建議然後是一個壞主意 – steffinchen 2012-02-24 17:36:29