📜  JavaFX |选择框

📅  最后修改于: 2022-05-13 01:55:18.203000             🧑  作者: Mango

JavaFX |选择框

ChoiceBox 是 JavaFX 包的一部分。 ChoiceBox 显示一组项目并允许用户选择一个选项,它将在顶部显示当前选择的项目。 ChoiceBox 默认没有选中项,除非另有选择。可以先指定项目,然后指定选定项目,也可以指定选定项目,然后指定项目。

ChoiceBox 类的构造函数是

  1. ChoiceBox() :创建一个新的空选择框。
  2. ChoiceBox(ObservableList items) :使用给定的项目集创建一个新的 ChoiceBox。

常用方法

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.

下面的程序说明了 ChoiceBox 的使用:

  1. 创建 ChoiceBox 并向其添加项目的程序:该程序创建一个名为 c 的 ChoiceBox,并使用 (ChoiceBox(FXCollections.observableArrayList(string_array))) 向其添加字符串列表。我们将选项和标签添加到 tilepane(getChildren().add()函数)。然后我们将创建一个舞台(容器)并将瓷砖添加到场景中,并将场景添加到舞台中。然后使用 show()函数显示舞台。
    // 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);
        }
    }
    

    输出

  2. 创建 ChoiceBox 并向其添加侦听器的程序:该程序创建一个名为 c 的 ChoiceBox,并使用 (ChoiceBox(FXCollections.observableArrayList(string_array))) 向其添加字符串列表。我们将添加一个更改侦听器来检测用户何时选择了一个选项(我们将使用 addListener()函数添加侦听器)。更改侦听器具有一个函数(public void更改(观察值ov,数字值,数字new_value)),该函数在更改选择时被调用。我们将选项和标签添加到 tilepane(getChildren().add()函数)。然后我们将创建一个舞台(容器)并将瓷砖添加到场景中,并将场景添加到舞台中。最后,使用 show()函数显示舞台。
    // 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() {
      
                // 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);
        }
    }
    

    输出

注意:以上程序可能无法在在线 IDE 中运行,请使用离线编译器。

参考: https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/ChoiceBox.html