Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NPE when calling initOwner on Alert (JavaFX)

I am writing a program that shows an Alert, and I'm trying to call initOwner so that it will use the application icon, but I'm getting a NullPointerException.

Here's a minimal example:

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);
    }
}

and the relevant stack trace:

Caused by: java.lang.NullPointerException
    at javafx.scene.control.HeavyweightDialog.updateStageBindings(HeavyweightDialog.java:319)
    at javafx.scene.control.HeavyweightDialog.initOwner(HeavyweightDialog.java:120)
    at javafx.scene.control.Dialog.initOwner(Dialog.java:451)
    at AlertTest.start(AlertTest.java:9)

What am I doing wrong?

I'm using Oracle's JDK 1.8.0_51 in Linux.

like image 688
aditsu quit because SE is EVIL Avatar asked Nov 01 '25 12:11

aditsu quit because SE is EVIL


1 Answers

You are getting a NullPointerException because you did not set a Scene to the primary stage.

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);
    }

}
like image 166
Tunaki Avatar answered Nov 03 '25 03:11

Tunaki



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!