Skip to content
Related Articles

Related Articles

JavaFX | ChoiceBox

View Discussion
Improve Article
Save Article
  • Last Updated : 13 Jun, 2022
View Discussion
Improve Article
Save Article

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(): Creates 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




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

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




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

  1. 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
Recommended Articles
Page :

Start Your Coding Journey Now!