请参考下面的 JavaFX SSCCE。从窗口的默认标题栏“X”按钮关闭主要阶段时,会出现打印语句。单击“关闭”按钮时不会出现打印语句。为什么当我在舞台上调用 close() 时我的 onCloseHandler 没有被调用?我的期望在某种程度上是不合理的还是 JavaFX 中的这个(又一个)错误?谢谢!
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
Button closeButton = new Button("Close");
closeButton.setOnAction(e -> {
primaryStage.close();
});
primaryStage.setOnCloseRequest(e -> {
System.out.println("onCloseRequest handler called!");
});
StackPane rootPane = new StackPane();
rootPane.getChildren().add(closeButton);
primaryStage.setScene(new Scene(rootPane, 300, 250));
primaryStage.show();
}
}
Run Code Online (Sandbox Code Playgroud)
正如Javadoc所描述的,这仅在外部请求时触发:
当有外部请求关闭此窗口时调用。
也许setOnHidden
对你有用,它在两种情况下都被调用。
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
Button closeButton = new Button("Close");
closeButton.setOnAction(e -> {
primaryStage.close();
});
primaryStage.setOnHidden(e -> {
System.out.println("stage hidden");
});
StackPane rootPane = new StackPane();
rootPane.getChildren().add(closeButton);
primaryStage.setScene(new Scene(rootPane, 300, 250));
primaryStage.show();
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
994 次 |
最近记录: |