所以说我在JavaFX中有一个阶段。而不是通过按X关闭按钮来关闭窗口,我只是隐藏窗口或说切换到计算机上的其他应用程序。每当我隐藏窗口或切换到PC的任何其他窗口时,我都希望平台自动关闭。
我尝试了这三种方法,但是所有这些方法仅在我自己关闭窗口时才激活,而在隐藏窗口时才激活。
popupStage.setOnHidden(event -> Console.log("Hidden"));
popupStage.setOnHiding(event -> Console.log("Hidden"));
popupStage.setOnCloseRequest(event -> Console.log("Hidden"));
任何帮助将不胜感激。 谢谢。
答案 0 :(得分:2)
尝试使用Window对象的focusedProperty(阶段从Window继承此对象)。
您可以在此属性中添加侦听器,以便在用户切换活动窗口后立即得到通知。
import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.stage.Stage;
public class Example extends Application {
public static void main(String args[]) {
Application.launch(args);
}
@Override
public void start(Stage stage) {
stage.focusedProperty().addListener(this::focusChanged);
stage.setTitle("demo");
stage.show();
}
private void focusChanged(ObservableValue<? extends Boolean> property, Boolean wasFocused, Boolean isFocused) {
System.out.println("Window changed focus from " + wasFocused + " to " + isFocused);
}
}