o7planning

JavaFX ChoiceDialog Tutorial with Examples

  1. JavaFX ChoiceDialog
  2. ChoiceDialog Example

1. JavaFX ChoiceDialog

ChoiceDialog is a subclass of Dialog class. It shows a list of choices to the user, from which they can pick one item at most.
This is image of a standard ChoiceDialog:
If you don't set a Header Text, Title, Content Text, then the following image is a default ChoiceDialog.
** Code **
Book java = new Book(1L, "J01", "Java Tutorial for Beginners");
Book csharp = new Book(2L, "C01", "CSharp Tutoral for Beginners");
Book python = new Book(3L, "P01", "Python for Beginners");

Book defaultBook = csharp;

ChoiceDialog<Book> dialog = new ChoiceDialog<Book>(defaultBook, java, csharp, python);

dialog.setTitle("o7planning");
dialog.setHeaderText("Select a Book:");
dialog.setContentText("Book:");

Optional<Book> result = dialog.showAndWait();

result.ifPresent(book -> {
    this.label.setText(book.getName());
});
Use the following code snippet, if you want to hide the Header region:
dialog.setHeaderText(null);

2. ChoiceDialog Example

ChoiceDialogExample.java
package org.o7planning.javafx.choicedialog;

import java.util.Optional;

import org.o7planning.javafx.model.Book;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ChoiceDialog;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class ChoiceDialogExample extends Application {

    private Label label;

    private void showChoiceDialog() {

        Book java = new Book(1L, "J01", "Java Tutorial for Beginners");
        Book csharp = new Book(2L, "C01", "CSharp Tutoral for Beginners");
        Book python = new Book(3L, "P01", "Python for Beginners");

        Book defaultBook = csharp;

        ChoiceDialog<Book> dialog = new ChoiceDialog<Book>(defaultBook, java, csharp, python);

        dialog.setTitle("o7planning");
        dialog.setHeaderText("Select a Book:");
        dialog.setContentText("Book:");

        Optional<Book> result = dialog.showAndWait();

        result.ifPresent(book -> {
            this.label.setText(book.getName());
        });
    }

    @Override
    public void start(Stage stage) {

        VBox root = new VBox();
        root.setPadding(new Insets(10));
        root.setSpacing(10);

        this.label = new Label();

        Button button = new Button("Select a book");

        button.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                showChoiceDialog();
            }
        });

        root.getChildren().addAll(button, label);

        Scene scene = new Scene(root, 450, 250);
        stage.setTitle("JavaFX ChoiceDialog (o7planning.org)");
        stage.setScene(scene);

        stage.show();

    }

    public static void main(String args[]) {
        launch(args);
    }

}
Book.java
package org.o7planning.javafx.model;

public class Book {

    private Long id;
    private String code;
    private String name;

    public Book(Long id, String code, String name) {
        this.id = id;
        this.code = code;
        this.name = name;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return this.name;
    }
    
}

JavaFX Tutorials

Show More