如何在javafx的init方法中创建警报对话框?

时间:2018-07-14 18:57:51

标签: java javafx

我想在init方法中运行此代码,但会引发异常 如何在javafx中以这种方法创建警报而没有任何问题?

Open in Terminal

我需要在应用启动前显示一条消息,并且我不想使用JoptionPane

1 个答案:

答案 0 :(得分:2)

init方法中无法做到这一点。

From the JavaDoc of Application.init:

  

注意:JavaFX应用程序线程上未调用此方法。应用程序不得使用此方法构造场景或舞台。

如果您需要通过JavaFX GUI在init方法中向用户显示某些异常,请保存足够的信息以在字段中创建和显示消息,在start方法中显示消息,然后只需在Platform.exit关闭后通过Alert关闭应用程序:

private boolean exceptionInInit = false;

@Override
public void init() {
    try {
        // do something
    } catch (Exception e) {
        exceptionInInit = true;
    }
}

@Override
public void start(Stage primaryStage) {
    if (exceptionInInit) {
         Alert alert = new Alert(AlertType.ERROR);
         alert.setTitle("Error Dialog");
         alert.setHeaderText("Look, an Error Dialog");
         alert.setContentText("Ooops, there was an error!");
         alert.showAndWait();

         // make sure platform shuts down even though primary stage was never shown
         Platform.exit();
    } else {
        // normal startup
    }
}