我的JavaFX 8应用程序需要在获取焦点时执行doStuff()
。这很简单:
primaryStage.focusedProperty().addListener((observable, wasFocused, nowFocused) -> {
doStuff();
});
然而,当我显示对话框并且用户关闭它时,
doStuff()
会触发。我希望它只在用户从另一个应用程序切换到我的应用程序时触发,例如从浏览器中使用Alt+Tab。换句话说,我想要在其他应用程序窗口失去焦点并且我的应用程序窗口获得焦点时才触发
doStuff()
。这种情况可能吗?
编辑:由FibreFoX和Appelemac发布的答案需要在显示对话框之前显式执行额外的步骤。这个解决方案远非完美,因为我(或一般开发人员)必须在显示对话框之前记住这一步骤。忘记它会引入难以找到的错误。
自动扩展
Dialog
不是一个选项,因为我想使用已经扩展原始Dialog
的内置对话框。这是一个很基本的功能,如果在JavaFX中没有简单实现它的方法,我会很惊讶。