JavaFX |选择框
ChoiceBox 是 JavaFX 包的一部分。 ChoiceBox 显示一组项目并允许用户选择一个选项,它将在顶部显示当前选择的项目。 ChoiceBox 默认没有选中项,除非另有选择。可以先指定项目,然后指定选定项目,也可以指定选定项目,然后指定项目。
ChoiceBox 类的构造函数是:
- ChoiceBox() :创建一个新的空选择框。
- ChoiceBox(ObservableList items) :使用给定的项目集创建一个新的 ChoiceBox。
常用方法:
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. |
下面的程序说明了 ChoiceBox 的使用:
- 创建 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); } }
输出:
- 创建 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