JavaFX - 复选框



复选框是一个用户界面组件,允许用户选择或取消选择一个选项。它最常用于创建多项选择题、首选项、过滤器等等。下图显示了一个带有多个选项的筛选功能,允许用户根据自己的偏好选择类别和品牌。

JavaFX Checkbox

在 JavaFX 中创建复选框

在 JavaFX 中,复选框由名为CheckBox的类表示。此类属于javafx.scene.control包。通过实例化此类,我们可以在 JavaFX 中创建一个复选框。CheckBox 类的构造函数如下所示:

  • CheckBox() - 这是默认构造函数,它构建一个没有任何选项名称的 CheckBox。

  • CheckBox(String str) - 它使用指定的选项构建一个新的 CheckBox。

CheckBox类最常用的构造函数是其参数化构造函数。它接受一个表示 CheckBox 选项名称的文本。创建复选框后,通过将 CheckBox 对象传递给其构造函数来定义一个布局窗格,例如 Vbox 或 Hbox。然后,创建一个场景并将布局窗格的对象作为参数值传递给其构造函数。接下来,设置 JavaFX 应用程序的舞台和标题。最后,调用main()方法启动应用程序。

示例

以下是使用 JavaFX 创建 CheckBox 的程序。将此代码保存在名为CheckBoxDemo.java的文件中。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.geometry.Pos;
import javafx.geometry.Insets;
public class CheckBoxDemo extends Application {
   @Override
   public void start(Stage stage) throws Exception {
      // Creating a Label
      Label label = new Label("Click the box to select: ");
      // Creating three CheckBoxes
      CheckBox checkBx1 = new CheckBox("Item1");
      checkBx1.setTextFill(Color.GREEN);
      checkBx1.setSelected(false);
      CheckBox checkBx2 = new CheckBox("Item2");
      checkBx2.setTextFill(Color.BLUE);
      checkBx2.setSelected(false);
      CheckBox checkBx3 = new CheckBox("Item3");
      checkBx3.setTextFill(Color.SKYBLUE);
      checkBx3.setSelected(false);
      // Create a Label to display the selection
      Label selectLabel = new Label();
      selectLabel.setTextFill(Color.RED);
      // Adding listeners to the CheckBoxes
      checkBx1.setOnAction(e -> selectLabel.setText("You selected: " + 
         (checkBx1.isSelected() ? "Item1" : "")
      ));
      checkBx2.setOnAction(e -> selectLabel.setText("You selected: " + 
         (checkBx2.isSelected() ? "Item2" : "")
      )); 
      checkBx3.setOnAction(e -> selectLabel.setText("You selected: " + 
         (checkBx2.isSelected() ? "Item3" : "")
      ));     
      // Create a VBox and add the CheckBoxes and Label
      VBox vbox = new VBox();
      vbox.setAlignment(Pos.CENTER); 
      vbox.setPadding(new Insets(10));
      vbox.setSpacing(10);
      vbox.getChildren().addAll(label, checkBx1, checkBx2, checkBx3, selectLabel);
      // Create a scene and add the VBox
      Scene scene = new Scene(vbox, 400, 300);
      // Set the scene and show the stage
      stage.setScene(scene);
      stage.setTitle("CheckBox in JavaFX");
      stage.show();
   }
   public static void main(String[] args) {
      launch(args);
   }
}

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

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

输出

执行后,上述程序将生成一个 JavaFX 窗口,显示三个复选框,如下所示:

CheckBox Output

在 JavaFX 中使用默认构造函数创建复选框

如前所述,我们可以使用其默认构造函数或其参数化构造函数在 JavaFX 中创建 CheckBox。在下一个示例中,我们将使用默认构造函数并使用名为setText()的内置方法传递选项文本。将此代码保存在名为JavafxCheckbox.java的文件中。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.geometry.Pos;
import javafx.geometry.Insets;
public class JavafxCheckbox extends Application {
   @Override
   public void start(Stage stage) throws Exception {
      // Creating a Label
      Label label = new Label("Click the box to select: ");
      // Creating three CheckBoxes without label text
      CheckBox checkBx1 = new CheckBox();
      checkBx1.setTextFill(Color.GREEN);
      checkBx1.setSelected(true);
      // adding lable to the check box1
      checkBx1.setText("Item1");
      CheckBox checkBx2 = new CheckBox();
      // adding lable to the check box2
      checkBx2.setText("Item2");
      checkBx2.setTextFill(Color.BLUE);
      checkBx2.setSelected(false);
      // Create a Label to display the selection
      Label selectLabel = new Label();
      selectLabel.setTextFill(Color.RED);
      // Adding listeners to the CheckBoxes
      checkBx1.setOnAction(e -> selectLabel.setText("You selected: " + 
         (checkBx1.isSelected() ? "Item1" : "")
      ));
      checkBx2.setOnAction(e -> selectLabel.setText("You selected: " + 
         (checkBx2.isSelected() ? "Item2" : "")
      ));     
      // Create a HBox and add the CheckBoxes and Label
      HBox box = new HBox();
      box.setAlignment(Pos.CENTER); 
      box.setPadding(new Insets(10));
      box.setSpacing(10);
      box.getChildren().addAll(label, checkBx1, checkBx2, selectLabel);
      // Create a scene and add the HBox
      Scene scene = new Scene(box, 400, 300);
      // Set the scene and show the stage
      stage.setScene(scene);
      stage.setTitle("CheckBox in JavaFX");
      stage.show();
   }
   public static void main(String[] args) {
      launch(args);
   }
}

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

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

输出

执行上述程序后,它将生成一个 JavaFX 窗口,显示两个复选框,如下所示:

CheckBox Output2
广告