警报类型无关闭javafx

时间:2015-09-04 15:56:45

标签: java user-interface javafx alert

我有一个带有菜单栏的程序,其中有一个'关于'按钮显示有关该应用程序的一些信息。

问题是,当我使用AlertType.INFORMATION时,我可以点击Ok按钮关闭警报,但是当我按下关闭窗口按钮时我使用NONE时,没有任何反应。我已经尝试过设置setOnCloseAction(e-> close());但它也没有关闭。

谢谢!

// Load root layout from fxml file.
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(MainApp.class.getResource("view/RootLayout.fxml"));
        rootLayout = (BorderPane) loader.load();

        RootLayoutController controller = loader.getController();
        controller.setMain(this);

Main使用

在主类中设置
Traceback (most recent call last):
  File "LArSoftSGD.py", line 154, in <module>
    stat_bundle = train_batch_iterator(clf, TOTAL_TRAINED_EVENTS)
  File "LArSoftSGD.py", line 121, in train_batch_iterator
    plot_data.append((test_batch_iterator(clf), tte))
  File "LArSoftSGD.py", line 91, in test_batch_iterator
    minibatch_test = dill.load(stream)
  File "/home/jdoe/.local/lib/python3.4/site-packages/dill/dill.py", line 199, in load
obj = pik.load()
  File "/usr/lib/python3.4/pickle.py", line 1036, in load
dispatch[key[0]](self)
KeyError: 95

3 个答案:

答案 0 :(得分:8)

documentation解释(在“对话框关闭规则”部分中)按下窗口关闭按钮将无效,除非只有一个按钮,或者有两个或更多按钮,其中一个是本质上是一个“取消”按钮。因此,当您使用Alert创建AlertType.NONE时,它没有按钮,因此将忽略使用标准“窗口关闭”按钮关闭它。

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

alert.getDialogPane().getButtonTypes().add(ButtonType.OK);

答案 1 :(得分:4)

基于Dialog documentation,您似乎必须在对话框/警报中至少有一个按钮才能使用角落中的“x”按钮关闭它。根据文档,用“x”按钮关闭被认为是“异常”关闭。这就是它所说的:

  

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

     

当对话框只有一个按钮或

时      

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

     

该按钮有一个ButtonType,其ButtonBar.ButtonData的类型为ButtonBar.ButtonData.CANCEL_CLOSE。

     

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

答案 2 :(得分:0)

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

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