gpt4 book ai didi

JavaFX stage.setOnCloseRequest 没有功能?

转载 作者:行者123 更新时间:2023-12-05 01:32:34 25 4
gpt4 key购买 nike

这是我的开始方法。首先,我创建一个舞台并设置标题和场景。如果有人想关闭 window-close-btn [X] 上的窗口,我想创建一个对话框。我想我会用 setOnCloseRequest() 函数捕获这个事件。但是我仍然可以关闭我在运行时打开的所有阶段。

@Override
public void start(final Stage primaryStage) throws Exception {
primaryStage.setTitle("NetControl");
primaryStage.setScene(
createScene(loadMainPane())
);

primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {
@Override
public void handle(final WindowEvent event) {
//Stage init
final Stage dialog = new Stage();
dialog.initModality(Modality.APPLICATION_MODAL);

// Frage - Label
Label label = new Label("Do you really want to quit?");

// Antwort-Button JA
Button okBtn = new Button("Yes");
okBtn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
dialog.close();
}
});

// Antwort-Button NEIN
Button cancelBtn = new Button("No");
cancelBtn.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
primaryStage.show();
dialog.close();
}
});
}
});

primaryStage.show();
}

private Pane loadMainPane() throws IOException {
FXMLLoader loader = new FXMLLoader();

Pane mainPane = (Pane) loader.load(
getClass().getResourceAsStream(ContentManager.DEFAULT_SCREEN_FXML)
);

MainController mainController = loader.getController();

ContentManager.setCurrentController(mainController);
ContentManager.loadContent(ContentManager.START_SCREEN_FXML);

return mainPane;
}

private Scene createScene(Pane mainPane) {
Scene scene = new Scene(mainPane);
setUserAgentStylesheet(STYLESHEET_MODENA);
return scene;
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Application.launch(args);
}

有没有其他函数可以捕捉窗口事件?或者在 primaryStage 上运行 CloseRequest 是否合乎逻辑,我读了一些关于平台的东西(但我不知道我的问题是否有必要)?

最佳答案

onCloseRequest 处理程序中,调用 event.consume();

这将防止初级阶段关闭。

从取消按钮的处理程序中删除 primaryStage.show(); 调用,并在 OK 按钮的处理程序中添加对 primaryStage.hide(); 的调用。

关于JavaFX stage.setOnCloseRequest 没有功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23160573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com