2013-04-13 32 views
1

我有一個名爲reminderList的列表。如何在鼠標輸出事件上啓動計時器並在鼠標輸入事件上停止該計時器?

當在列表中的項目鼠標鼠標點擊退出名單,我希望有一個計時器啓動。

當鼠標進入名單,我想,計時器停止,如果它仍在運行。

當鼠標再次退出列表時,我希望同一個計時器重新啓動。

public void waitReminderList(int status) { 
    Timer timer = new Timer(10000, new ActionListener() { 
     public void actionPerformed(ActionEvent evt) { 
      reminderList.clearSelection(); 
      dismissReminder.setEnabled(false); 
     } 
    }); 
    if (status == 0) { 
     if (!reminderList.isSelectionEmpty()) { 
      timer.setRepeats(false); 
      timer.restart(); 
      timer.start(); 
     } 
    } else if (status == 1) { 
     if (!reminderList.isSelectionEmpty()) { 
      timer.stop(); 
     } 
    } 

private void reminderListMouseExited(java.awt.event.MouseEvent evt) {           
    waitReminderList(0); 
} 

private void reminderListMouseEntered(java.awt.event.MouseEvent evt) {           
    waitReminderList(1); 
} 

問題是:計時器不會停止或重新啓動或任何事情後,它已經開始,但我需要它。

我解決問題的辦法是有一個int,然後我可以控制我希望定時器由整型值做。但它沒有工作,定時器不會停止...

那麼我做錯了什麼?

我知道有過這樣的其他問題,但是,我仍然相當新的Java和我不明白給出的答案。

謝謝

+1

您是否嘗試過用增加'的System.out.println()'內如果塊,看它是當你做某些事情達成什麼樣的代碼一些調試輸出? –

+0

我做過了,但是當我發佈這個時,我就把它們拿出來了。他們沒有幫助我,我只看到我的if語句正在工作。但是,謝謝你的建議! –

回答

1

不要在waitReminderList()方法中創建新的Timer。您應該將Timer定義爲類變量。

然後您只需根據需要停止/啓動它。

+0

好吧,我會嘗試這個 –

+0

它的工作,謝謝!它現在非常有意義,我希望我在發佈之前想到它... –

2

的問題是,你正在創建一個新的TimerwaitReminderList被調用時。任何以前運行的Timer對象都不會停止。由於您希望單個Timer將參考移動到之外,因此該方法(例如,在課堂上。

+0

我現在明白了,謝謝! –

相關問題