我想在init方法中运行此代码,但会引发异常 如何在javafx中以这种方法创建警报而没有任何问题?
Open in Terminal
我需要在应用启动前显示一条消息,并且我不想使用JoptionPane
答案 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
}
}