Jacob
Jacob

Reputation: 21

JavaFX create alert and get result

For my CS class they require us to use JavaFX alerts. I can make an alert appear, but how do I get what button was clicked? What would be the best way to go about getting this data?

Also if possible, I'd like to make it have a drop down panel and when the user selects and option the alert closes and prints what the user selected.

Here's some example code that I have. When I click one of the buttons, it just closes the dialog.

Alert a = new Alert(AlertType.NONE, "Promote pawn to:", new ButtonType("Queen"), new ButtonType("Rook"));
a.setTitle("Title");
a.setHeaderText("My header text");
a.setResizable(true);
a.setContentText("Content text");
a.showAndWait();

Thanks,

Upvotes: 2

Views: 4566

Answers (2)

anilkay
anilkay

Reputation: 144

İf you want to do it with Non-Blocking type of code:

final Alert alert2 = new Alert(Alert.AlertType.CONFIRMATION);
alert2.show();
alert2.setOnCloseRequest(new EventHandler<DialogEvent>() {
    @Override
    public void handle(DialogEvent event) {
        ButtonType result=alert2.getResult();
        String resultText=result.getText();
        //result logic
    }
});

Upvotes: 1

James_D
James_D

Reputation: 209358

You can do

ButtonType queen = new ButtonType("Queen");
ButtonType rook = new ButtonType("Rook");
Alert a = new Alert(AlertType.NONE, "Promote pawn to:", queen, rook);
a.setTitle("Title");
a.setHeaderText("My header text");
a.setResizable(true);
a.setContentText("Content text");
a.showAndWait().ifPresent(response -> {
    if (response == queen) {
        // promote to queen...
    } else if (response == rook) {
        // promote to rook...
    }
});

Upvotes: 3

Related Questions