簡體   English   中英

在一段時間內停止接收Java中的所有ActionEvent / Stop偵聽?

[英]Stop receiving all ActionEvents/Stop Listening in Java for a period of time?

我有一個簡單的程序,利用Java Swing Timer在400毫秒內顯示圖像,在這段時間內,我只想停止所有ActionListener或停止采取ActionEvents。 我有40多個按鈕,想要一個簡單的方法來做到這一點。

反正用Java可以做到嗎?

您可以確定自己處於此“顯示的圖像”狀態嗎? 圖像上升,您將狀態設置為“顯示的圖像”或其他。 瀏覽您的小部件,並確定在圖像啟動時應該死掉的小部件。 將它們變成該狀態值的觀察者。 狀態更改時,它們會根據需要啟用或禁用。 圖像代碼不直接對任何窗口小部件執行任何操作。 它只是聲明狀態現在為“圖像顯示”。 由觀察員決定如何處理該信息(如果有)。

或使用GlassPane。 那也行。 當然,GlassPane會關閉所有內容 如果您需要更具選擇性,則需要一種更精細的方法。

您可以使用臨時GlassPane實例通過向其注冊空偵聽器來使用所有事件。

使用未經修飾的模式JDialog來顯示圖像。 在顯示對話框之前,您將啟動一個計時器。 當計時器在400毫秒后觸發時,您將關閉對話框。

我遇到過類似的問題,通常會發現它的設計問題使我陷入了這種情況。 既然如此,我仍然必須四處尋找。 為了解決此問題,我保留了要禁用(停止監聽)的元素列表,並在計時器的開始和結束時對其進行了迭代。 對於按鈕,它應該很簡單:

for(Component c : listOfToggledComponents){
     c.setEnabled(shouldItBeEnabled);
}

對於按鈕,這將使按鈕變灰。 其他擺動組件也會發生類似的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM