Open In App

JavaFX | ChoiceBox

Last Updated : 13 Jun, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

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:

method explanation
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



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads