Button 禁用红色';X';关闭整个JavaFX程序的按钮 ;w/Java8?

Button 禁用红色';X';关闭整个JavaFX程序的按钮 ;w/Java8?,button,javafx,disabled-control,Button,Javafx,Disabled Control,我遇到了一点问题。我正在为客户创建一个程序。在该程序中,我实现了一个专用的“关闭/关闭”按钮-需要密码才能正确关闭。但另一种关闭程序的方法(也不太安全)是点击红色的“关闭”或“X”按钮:右上角(Windows)或左上角(Mac) 我不希望红色的x按钮实际上关闭整个程序。我想知道的是:是否可以完全禁用红色的“x”按钮来关闭整个程序?如果可能的话,有人能提供代码吗 我使用的是:IntelliJ IDEA(Ultimate)、JavaFX和Java8,开发语言:Java向阶段的onCloseReque

我遇到了一点问题。我正在为客户创建一个程序。在该程序中,我实现了一个专用的“关闭/关闭”按钮-需要密码才能正确关闭。但另一种关闭程序的方法(也不太安全)是点击红色的“关闭”或“X”按钮:右上角(Windows)或左上角(Mac)


我不希望红色的x按钮实际上关闭整个程序。我想知道的是:是否可以完全禁用红色的“x”按钮来关闭整个程序?如果可能的话,有人能提供代码吗


我使用的是:IntelliJ IDEA(Ultimate)、JavaFX和Java8,开发语言:Java

向阶段的
onCloseRequest
事件添加事件处理程序。这允许您通过使用事件并执行自己的关闭过程来防止窗口关闭:

private void shutdown(Stage mainWindow) {
    // you could also use your logout window / whatever here instead
    Alert alert = new Alert(Alert.AlertType.NONE, "Really close the stage?", ButtonType.YES, ButtonType.NO);
    if (alert.showAndWait().orElse(ButtonType.NO) == ButtonType.YES) {
        // you may need to close other windows or replace this with Platform.exit();
        mainWindow.close();
    }
}

@Override
public void start(Stage primaryStage) {
    primaryStage.setOnCloseRequest(evt -> {
        // prevent window from closing
        evt.consume();

        // execute own shutdown procedure
        shutdown(primaryStage);
    });

    StackPane root = new StackPane();

    Scene scene = new Scene(root, 100, 100);

    primaryStage.setScene(scene);
    primaryStage.show();
}

“我不希望红色的x按钮实际上关闭整个程序”。你能澄清一下你想要什么吗?您希望它仍然关闭窗口,但希望程序在窗口关闭时继续运行吗?您只需要
Platform.setImplicitExit(false)如果这是你的意思。同样,我已经有一个专用的关闭按钮,它会导致一个新窗口(阶段),要求用户输入一个“关闭代码”——由一个按钮发出,该按钮是setOnAction(ActionEvent e)->{}。只有员工才会知道这些信息。我想要的是,如果客户意外(或故意)按下红色X,它会将他们带到与实现的“关闭”相同的位置。我不想复制舞台、场景等。我只想让程序这样做:按下红色x?。。转到setOnAction(ActionEvent e)->它处理手动关机过程。@YuriKhechoyan,你写评论是因为???是否显示
警报
或启动其他程序以允许用户关闭程序完全取决于您。你也可以替换场景,而不是显示一些注销屏幕,如果你想这样处理…它的工作!!再次感谢你!我只是需要对您提供的一些代码做一些小修改!非常感谢!如何使队列中的某个元素发生某些事情?例如:如果有人在队列中排名第100位='System.out.println(“祝贺您!您是第100位客户!”);'@YuriKhechoyan请不要在评论中提出新的、无关的问题,而是作为新问题提问。