JavaFX - 选择框



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

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

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

  • ChoiceBox() - 用于创建没有标题面板的手风琴。

  • ChoiceBox(ObservableList<t> items) - 它将创建一个具有指定标题面板的手风琴。(此处原文有误,应为创建带有指定项的选择框)

在 JavaFX 中创建选择框

我们需要按照以下步骤在 JavaFX 中创建 ChoiceBox。

步骤 1:实例化 ChoiceBox 类

在 JavaFX 中,选择框是通过实例化名为 ChoiceBox 的类创建的,该类属于包 javafx.scene.control。像下面这样在 start() 方法内实例化此类:

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

步骤 2:向 ChoiceBox 添加项

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

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

注意 - 有时,我们可能需要为 ChoiceBox 指定其他说明,在这种情况下,我们可以使用 JavaFX 的 Label 或 TextField 类。

步骤 3:启动应用程序

创建 ChoiceBox 并添加其项后,请按照以下步骤正确启动应用程序:

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

  • 然后,使用 Stage 类的 setTitle() 方法设置舞台的标题。

  • 现在,使用名为 Stage 的类的 setScene() 方法将 Scene 对象添加到舞台。

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

  • 最后,在 launch() 方法的帮助下启动应用程序。

示例

以下 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

使用其参数化构造函数创建选择框

前面,我们使用了 ChoiceBox 类的空构造函数来创建一个选择框。但是,还有另一种方法可以实现相同的功能。我们可以通过使用 observableArrayList 传递列表项作为参数来使用参数化构造函数。

示例

以下是将使用 ChoiceBox 类参数化构造函数创建选择框的 JavaFX 程序。将此代码保存在名为 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
广告