我的JavaFX 8应用程序在获得专注时必须登录到doStuff()
。这是相当简单:如何应对从另一个应用程序获取焦点?
primaryStage.focusedProperty().addListener((observable, wasFocused, nowFocused) -> {
doStuff();
});
然而,当我显示一个对话框,用户关闭它,doStuff()
火灾。我希望它只在用户从另一个应用切换到我的时候才会触发,例如Alt + 选项卡来自浏览器。
换句话说,我想doStuff()
iff其他应用程序的窗口失去焦点,我的应用程序窗口变得焦点。
可能吗?
编辑:发布FibreFoX和Appelemac的答案需要在显示对话框之前明确执行额外的步骤。这个解决方案远非完美,因为我(或任何一般的开发人员)必须在显示对话之前记住这一步骤。忘了它会引入很难找到的错误。
扩展Dialog
自动执行它不是一个选项,因为我想使用已经扩展原始Dialog
的内置对话框。
这是非常基本的功能,如果在JavaFX中没有简单的方法来实现这一点,我会感到惊讶。
这样做,每一个对话听起来并不很有趣。我希望有一种方法可以自动处理它。 – gronostaj
hmmm,我建议创建一个(阵列)即时对话框列表,为听众创建一个小的子类,并实现向该列表添加一个Instant,然后检查每个Instant。效率不高,但我认为它会奏效。 – Appelemac