Javafx 简明教程

JavaFX - ChoiceBox

ChoiceBox 是预定义选项的下拉列表,允许用户一次选取其中一个选项。它始终在顶部显示当前选定的选项,当用户单击 ChoiceBox 时,它会显示所有其他可用选项的下拉列表。

在 JavaFX 中,ChoiceBox 由名为 ChoiceBox 的类表示。此类属于 javafx.scene.control 包。通过实例化此类,可以在 JavaFX 中创建一个 ChoiceBox 节点。

此类有两个可用的构造函数,如下所示:

  1. ChoiceBox() − 用于创建不带 TitledPane 的手风琴。

  2. ChoiceBox(ObservableList items) − 它将创建一个带有指定 TitledPane 的手风琴。

Creating a Choice Box in JavaFX

我们需要按照下面给出的步骤在 JavaFX 中创建一个 ChoiceBox。

Step 1: Instantiate the ChoiceBox class

在 JavaFX 中,ChoiceBox 通过实例化属于包 * javafx.scene.control* 的名为 ChoiceBox 的类来创建。如下图所示,在 start() 方法内部实例化这个类 −

//Instantiating the ChoiceBox class
ChoiceBox<String> box = new ChoiceBox<String>();

Step 2: Add Items to the ChoiceBox

我们在 JavaFX 中使用 ObservableList 将项目添加到 ChoiceBox 中。它包含具有指定类型(例如 String)的所有项目。

//Retrieving the observable list
ObservableList<String> oslist = box.getItems();
//Adding items to the list
oslist.addAll("Windows7", "Windows8", "Windows10", "Windows11", "MAC OS");

Note − 有时,我们可能需要为 ChoiceBox 指定附加描述,在这种情况下,我们可以使用 JavaFX 的 Label 或 TextField 类。

Step 3: Launch the Application

在创建 ChoiceBox 并添加其项目后,请按照下面给出的步骤正确启动应用程序 −

  1. 首先,通过将 ChoiceBox 对象作为参数值传递给其构造函数,实例化名为 Scene 的类。我们也可以将应用程序屏幕的尺寸作为可选项参数传递给此构造函数。

  2. 然后,使用 Stage 类的 setTitle() 方法设置阶段标题。

  3. 现在,使用名为 Stage 的类的 setScene() 方法将 Scene 对象添加到阶段。

  4. 使用名为 show() 的方法显示场景的内容。

  5. 最后,借助 launch() 方法启动应用程序。

Example

以下 JavaFX 程序演示了如何在 JavaFX 应用程序中使用 ChoiceBox。将此代码保存在名为 JavafxChoiceBox.java 的文件中。

import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.Label;
import javafx.stage.Stage;
public class JavafxChoiceBox extends Application {
   public void start(Stage stage) {
      //Instantiating the ChoiceBox class
      ChoiceBox<String> box = new ChoiceBox<String>();
      //Retrieving the observable list
      ObservableList<String> oslist = box.getItems();
      //Adding items to the list
      oslist.addAll("Windows7", "Windows8", "Windows10", "Windows11", "MAC OS");
      //Setting the position of the choice box
      box.setTranslateX(200);
      box.setTranslateY(15);
      //Setting the label
      Label setlabel = new Label("Select your Operating System:");
      setlabel.setTranslateX(20);
      setlabel.setTranslateY(20);
      //Adding the choice box to the group
      Group newgrp = new Group(box, setlabel);
      //Setting the stage
      Scene scene = new Scene(newgrp, 500, 200);
      stage.setTitle("Choice Box in JavaFX");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

要从命令提示符编译并执行已保存的 Java 文件,请使用以下命令−

javac --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxChoiceBox.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxChoiceBox

当我们执行上述代码时,它将生成以下输出。

choicebox output

Creating a Choice Box using its Parameterized Constructor

之前,我们使用 ChoiceBox 类的空构造函数来创建 ChoiceBox。然而,还有另一种可用的方法可以达到相同目的。我们可以使用参数化构造函数,通过将 observableArrayList 作为参数传递列表项目。

Example

以下是 JavaFX 程序,它将使用 ChoiceBox 类的参数化构造函数创建一个 ChoiceBox。将此代码保存在名为 JavafxChoiceBox.java 的文件中。

import javafx.application.Application;
import javafx.collections.*;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.Label;
import javafx.stage.Stage;
public class JavafxChoiceBox extends Application {
   public void start(Stage stage) {
      //Creating a ChoiceBox
      ChoiceBox<String> box = new ChoiceBox<String> (
         FXCollections.observableArrayList(
	     "Windows7", "Windows8", "Windows10", "Windows11", "MAC OS"));
      //Setting the position of the choice box
      box.setTranslateX(200);
      box.setTranslateY(15);
      //Setting the label
      Label setlabel = new Label("Select your Operating System:");
      setlabel.setTranslateX(20);
      setlabel.setTranslateY(20);
      //Adding the choice box to the group
      Group newgrp = new Group(box, setlabel);
      //Setting the stage
      Scene scene = new Scene(newgrp, 500, 200);
      stage.setTitle("Choice Box in JavaFX");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

使用以下命令从命令提示符处编译并执行已保存的 Java 文件。

javac --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxChoiceBox.java
java --module-path %PATH_TO_FX% --add-modules javafx.controls JavafxChoiceBox

在执行时,以上程序会生成一个 JavaFX 窗口,显示以下输出。

choicebox output2