Skip to content
Related Articles

Related Articles

Improve Article

JavaFX | ChoiceBox

  • Last Updated : 24 Oct, 2019

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:

methodexplanation
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.




    // 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:

  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.




    // 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:

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

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.




My Personal Notes arrow_drop_up
Recommended Articles
Page :