JavaFX | ChoiceBox

13 Jun, 2022
ChoiceBox is a part of the JavaFX package. ChoiceBox shows a set of items and allows the user to select a single choice and it will show the currently selected item on the top. ChoiceBox by default has no selected item unless otherwise selected. One may either specify the items and then the selected item, or you may specify the selected item and then the items. Constructor of the ChoiceBox class are:
ChoiceBox(): Creates a new empty ChoiceBox.ChoiceBox(ObservableList items): Creates a new ChoiceBox with the given set of items.
ChoiceBox(): Creates a new empty ChoiceBox.
ChoiceBox(ObservableList items): Creates a new ChoiceBox with the given set of items.
Commonly used methods:
Below program illustrate the use of ChoiceBox:
Program to create a ChoiceBox and add items to it: This program creates a ChoiceBox named c and add a list of string to it using(ChoiceBox(FXCollections.observableArrayList(string_array))). We would add the choice and a label to the tilepane(getChildren().add() function). Then we will create a stage (container) and add the tilepane to the scene and add the scene to the stage. Then display the stage using show() function. 
Program to create a ChoiceBox and add items to it: This program creates a ChoiceBox named c and add a list of string to it using(ChoiceBox(FXCollections.observableArrayList(string_array))). We would add the choice and a label to the tilepane(getChildren().add() function). Then we will create a stage (container) and add the tilepane to the scene and add the scene to the stage. Then display the stage using show() function. 
Java
// Java  Program to create a ChoiceBox and add items to it.import javafx.application.Application;import javafx.scene.Scene;import javafx.scene.control.*;import javafx.scene.layout.*;import javafx.event.ActionEvent;import javafx.event.EventHandler;import javafx.collections.*;import javafx.stage.Stage;public class Choice_1 extends Application {     // launch the application    public void start(Stage s)    {        // set title for the stage        s.setTitle("creating ChoiceBox");         // create a button        Button b = new Button("show");         // create a tile pane        TilePane r = new TilePane();         // create a label        Label l = new Label("This is a choice box");         // string array        String st[] = { "Arnab", "Andrew", "Ankit", "None" };         // create a choiceBox        ChoiceBox c = new ChoiceBox(FXCollections.observableArrayList(st));         // add ChoiceBox        r.getChildren().add(l);        r.getChildren().add(c);         // create a scene        Scene sc = new Scene(r, 200, 200);         // set the scene        s.setScene(sc);         s.show();    }     public static void main(String args[])    {        // launch the application        launch(args);    }}
Output: Program to create a ChoiceBox and add listener to it: This program creates a ChoiceBox named c and add a list of string to it using(ChoiceBox(FXCollections.observableArrayList(string_array))). We would add a change listener to detect when the user selects an item of the choice (we will add the listener using addListener() function ). The change listener has a function(public void changed(ObservableValue ov, Number value, Number new_value)) which is invoked when the selection of choice is changed. We would add the choice and a label to the tilepane(getChildren().add() function). Then we will create a stage (container) and add the tilepane to the scene and add the scene to the stage. Finally, display the stage using show() function. 
Output: 
Program to create a ChoiceBox and add listener to it: This program creates a ChoiceBox named c and add a list of string to it using(ChoiceBox(FXCollections.observableArrayList(string_array))). We would add a change listener to detect when the user selects an item of the choice (we will add the listener using addListener() function ). The change listener has a function(public void changed(ObservableValue ov, Number value, Number new_value)) which is invoked when the selection of choice is changed. We would add the choice and a label to the tilepane(getChildren().add() function). Then we will create a stage (container) and add the tilepane to the scene and add the scene to the stage. Finally, display the stage using show() function. 
Java
// Java  Program to create a ChoiceBox and add listener to it.import javafx.application.Application;import javafx.scene.Scene;import javafx.scene.control.*;import javafx.scene.layout.*;import javafx.event.ActionEvent;import javafx.event.EventHandler;import javafx.collections.*;import javafx.beans.value.*;import javafx.stage.Stage;public class Choice_2 extends Application {     // launch the application    public void start(Stage s)    {        // set title for the stage        s.setTitle("creating ChoiceBox");         // create a button        Button b = new Button("show");         // create a tile pane        TilePane r = new TilePane();         // create a label        Label l = new Label("This is a choice box");        Label l1 = new Label("nothing selected");         // string array        String st[] = { "Arnab", "Andrew", "Ankit", "None" };         // create a choiceBox        ChoiceBox c = new ChoiceBox(FXCollections.observableArrayList(st));         // add a listener        c.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {             // if the item of the list is changed            public void changed(ObservableValue ov, Number value, Number new_value)            {                 // set the text for the label to the selected item                l1.setText(st[new_value.intValue()] + " selected");            }        });         // add ChoiceBox        r.getChildren().add(l);        r.getChildren().add(c);        r.getChildren().add(l1);         // create a scene        Scene sc = new Scene(r, 200, 200);         // set the scene        s.setScene(sc);         s.show();    }     public static void main(String args[])    {        // launch the application        launch(args);    }}
Output: 
Output: 
Note: The above programs might not run in an online IDE please use an offline compiler. Reference: https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/ChoiceBox.html
ManasChhabra2
vinayedula
JavaFX
Java
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.