在Alert(JavaFX)上调用initOwner时的NPE

时间:2015-09-08 07:18:41

标签: java javafx javafx-8

我正在编写一个显示Alert的程序,并且我试图调用initOwner以便它将使用应用程序图标,但我得到了{{{1} 1}}。

这是一个最小的例子:

NullPointerException

和相关的堆栈跟踪:

import javafx.application.Application;
import javafx.scene.control.Alert;
import javafx.stage.Stage;

public class AlertTest extends Application {
    @Override
    public void start(final Stage primaryStage) throws Exception {
        final Alert alert = new Alert(Alert.AlertType.INFORMATION);
        alert.initOwner(primaryStage); // line 9
        alert.showAndWait();
    }

    public static void main(final String... args) {
        launch(args);
    }
}

我做错了什么?

我在Linux中使用Oracle的JDK 1.8.0_51。

1 个答案:

答案 0 :(得分:3)

您收到NullPointerException,因为您没有将Scene设置为初级阶段。

public class Main extends Application {

    @Override
    public void start(final Stage primaryStage) throws Exception {
        final Alert alert = new Alert(Alert.AlertType.INFORMATION);

        primaryStage.setScene(new Scene(new Group(), 300, 300, Color.BLACK));

        alert.initOwner(primaryStage);

        alert.showAndWait();
    }

    public static void main(final String... args) {
        launch(args);
    }

}