JavaFX | ChoiceBox

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:

  1. ChoiceBox(): Creats a new empty ChoiceBox.
  2. ChoiceBox(ObservableList items): Creates a new ChoiceBox with the given set of items.

Commonly used methods:

method explanantion
getItems() Gets the value of the property items.
getValue() Gets the value of the property value.
hide() Closes the list of choices.
setItems(ObservableList value) Sets the value of the property items.
setValue(T value) Sets the value of the property value.
show() Opens the list of choices.

Below program illustrate the use of ChoiceBox:

  1. 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.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

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

    chevron_right

    
    

    Output:

  2. 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.
    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

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

    chevron_right

    
    

    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



My Personal Notes arrow_drop_up

Second year Department of Information Technology Jadavpur University

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :
Practice Tags :


Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.