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
廣告