Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
警报类型无关闭javafx_Java_User Interface_Javafx_Alert - Fatal编程技术网

警报类型无关闭javafx

警报类型无关闭javafx,java,user-interface,javafx,alert,Java,User Interface,Javafx,Alert,我有一个带有菜单栏的程序,菜单栏上有一个“关于”按钮,用来显示有关应用程序的一些信息 问题是,当我使用AlertType.INFORMATION时,我可以点击Ok按钮关闭警报,但当我点击close window按钮时使用NONE时,什么也不会发生。我已经尝试放置一个setOnCloseAction(e->close());但它也不会关闭 谢谢 public class RootLayoutController { private MainApp main; @FXML private Men

我有一个带有菜单栏的程序,菜单栏上有一个“关于”按钮,用来显示有关应用程序的一些信息

问题是,当我使用AlertType.INFORMATION时,我可以点击Ok按钮关闭警报,但当我点击close window按钮时使用NONE时,什么也不会发生。我已经尝试放置一个setOnCloseAction(e->close());但它也不会关闭

谢谢

public class RootLayoutController {

private MainApp main;

@FXML
private MenuItem loadFiles;

@FXML
private MenuItem about;

@FXML
private void displayAbout() {
    Alert alert = new Alert(AlertType.NONE);
    alert.initStyle(StageStyle.UTILITY);
    alert.initOwner(main.getPrimaryStage());
    alert.setTitle("Organiz3r");
    alert.setHeaderText("Organiz3r v1.0");
    alert.setContentText("Developed at BitBucket");
    alert.showAndWait();
}

@FXML
private void handleLoad() {
    FileChooser fileChooser = new FileChooser();
    fileChooser.setTitle("Open Files");
    List<File> files = fileChooser.showOpenMultipleDialog(main.getPrimaryStage());
    main.loadFiles(files);
}

public RootLayoutController() {
    // TODO Auto-generated constructor stub
}

public void setMain(MainApp main) {
    this.main = main;
}
说明(在“对话框关闭规则”一节中)按下窗口关闭按钮将无效,除非只有一个按钮,或者有两个或多个按钮,其中一个按钮本质上是“取消”按钮。因此,当您使用
AlertType.NONE
创建
警报时,它没有按钮,因此使用标准的“窗口关闭”按钮关闭它将被忽略

因此,如果您不需要
警报类型.INFORMATION
,则需要在警报中添加一个按钮,您可以使用该按钮

alert.getDialogPane().getButtonTypes().add(ButtonType.OK);
基于此,您必须在对话框/警报中至少有一个按钮,才能使用角落中的“x”按钮将其关闭。根据文档,使用“x”按钮关闭被认为是“异常”关闭。下面是它所说的:

JavaFX对话框只能在两种情况下“异常”(如上所述)关闭:

当对话框只有一个按钮时,或

当对话框有多个按钮时,只要其中一个按钮满足以下要求之一:

按钮有一个ButtonType,其ButtonBar.ButtonData类型为ButtonBar.ButtonData.CANCEL\u CLOSE

该按钮有一个ButtonType,其ButtonBar.ButtonData在调用ButtonBar.ButtonData.isCancelButton()时返回true。 在所有其他情况下,对话框将拒绝响应所有关闭请求


您可以使用AlertType.INFORMATION,然后隐藏“确定”按钮。这使您可以从角落用“x”按钮关闭窗口,而无需另一个按钮


dialogPane.lookupButton(ButtonType.OK).setVisible(false)

请包括一个SSCCE!不抱歉,bad tag@CatalinaIslandI编辑了主帖@Ambert这也是正确答案,但James提供了使用AlertType.NONE的修复程序,请查看并添加一个简单按钮以满足要求。
alert.getDialogPane().getButtonTypes().add(ButtonType.OK);