与JavaFx中的FocusEvent.getOppositeComponent等效

Bal*_*erk 13 java javafx focus

在我的JavaFx应用程序中,我想在主框架获得焦点时调用一个方法。但是,我只想在焦点位于我的应用程序外部并返回时才做出反应(例如,当对话框关闭时不响应)。

当应用程序在Swing中时,我可以使用该方法

FocusEvent.getOppositeComponent
Run Code Online (Sandbox Code Playgroud)

(对应于失去焦点的元素),如果它为null,则我知道焦点先前不在我的应用程序之外。

我没有在JavaFX中找到任何等效项。

我尝试通过在窗口上添加事件过滤器来查看窗口事件:

primaryStage.addEventFilter(Event.ANY, e -> System.out.println("event " + e));
Run Code Online (Sandbox Code Playgroud)

但它不会跟踪焦点事件。

use*_*551 6

JavaFX中没有等效项。焦点更改将作为每个窗口的布尔属性单独处理,因此您只能知道窗口是否获得焦点或失去焦点。如果将侦听器注册到应用程序中的所有窗口,则可以确定其中一个窗口是否在另一个窗口获得焦点时失去了焦点。

JavaFX中没有“ FocusEvent”,您可以在中找到列出的所有事件类型Event

您可以在此处请求功能。

  • 不幸的是,“ focused”属性是不够的,因为前一个窗口在下一个窗口获得焦点之前就失去了焦点。换句话说,有时即使在应用程序中切换窗口时,也没有窗口(至少在Java端)没有焦点。否则,我(已删除)的答案将提供有效的解决方案。 (3认同)