我的JavaFX 8應用程序在獲得專注時必須登錄到doStuff()
。這是相當簡單:如何應對從另一個應用程序獲取焦點?
primaryStage.focusedProperty().addListener((observable, wasFocused, nowFocused) -> {
doStuff();
});
然而,當我顯示一個對話框,用戶關閉它,doStuff()
火災。我希望它只在用戶從另一個應用切換到我的時候纔會觸發,例如Alt + 選項卡來自瀏覽器。
換句話說,我想doStuff()
iff其他應用程序的窗口失去焦點,我的應用程序窗口變得焦點。
可能嗎?
編輯:發佈FibreFoX和Appelemac的答案需要在顯示對話框之前明確執行額外的步驟。這個解決方案遠非完美,因爲我(或任何一般的開發人員)必須在顯示對話之前記住這一步驟。忘了它會引入很難找到的錯誤。
擴展Dialog
自動執行它不是一個選項,因爲我想使用已經擴展原始Dialog
的內置對話框。
這是非常基本的功能,如果在JavaFX中沒有簡單的方法來實現這一點,我會感到驚訝。
這樣做,每一個對話聽起來並不很有趣。我希望有一種方法可以自動處理它。 – gronostaj
hmmm,我建議創建一個(陣列)即時對話框列表,爲聽衆創建一個小的子類,並實現向該列表添加一個Instant,然後檢查每個Instant。效率不高,但我認爲它會奏效。 – Appelemac