[英]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.