📜  JavaFX |复选框

📅  最后修改于: 2022-05-13 01:54:37.507000             🧑  作者: Mango

JavaFX |复选框

CheckBox 是 JavaFX 包的一部分。 CheckBox 是一个框,选中时带有勾号,未选中时为空。起初,复选框可能看起来类似于单选按钮,但它们之间的区别在于复选框不能组合成切换组,这意味着我们不能同时选择多个选项。

CheckBox 的状态

  • 检查:当不确定为假且已检查为真时
  • 未选中:当不确定为假且选中为假时
  • 未定义:当不确定为真时


    类的构造函数是:

    1. CheckBox() :创建一个带有空字符串作为其标签的复选框。
    2. CheckBox(String t) : 创建一个以给定文本作为标签的复选框。

    常用方法

    methodexplanation
    isIndeterminate()Gets the value of the property indeterminate.
    isSelected()Gets the value of the property selected.
    selectedProperty()Indicates whether this CheckBox is checked.
    setIndeterminate(boolean v)Sets the value of the property indeterminate.
    setSelected(boolean v)Sets the value of the property selected.

    下面的程序说明了 JavaFX 包中 CheckBox 的使用:

    1. 创建复选框并将其添加到阶段的程序:该程序创建一个由名称 c 指示的多个 CheckBox。 CheckBox 将在场景内创建,而场景又将托管在舞台内。复选框的不确定状态最初会使用 setIndeterminate()函数设置为 true。函数setTitle() 用于为舞台提供标题。然后创建一个平铺窗格,调用 addChildren() 方法将 CheckBox 和标签附加到场景中。最后调用 show() 方法显示最终结果。
      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 Checkbox_1 extends Application {
        
          // launch the application
          public void start(Stage s)
          {
              // set title for the stage
              s.setTitle("creating CheckBox");
        
              // create a tile pane
              TilePane r = new TilePane();
        
              // create a label
              Label l = new Label("This is a check box");
        
              // string array
              String st[] = { "Arnab", "Andrew", "Ankit" };
        
              // add label
              r.getChildren().add(l);
        
              for (int i = 0; i < st.length; i++) {
        
                  // create a checkbox
                  CheckBox c = new CheckBox(st[i]);
        
                  // add label
                  r.getChildren().add(c);
        
                  // set IndeterMinate
                  c.setIndeterminate(true);
              }
        
              // create a scene
              Scene sc = new Scene(r, 150, 200);
        
              // set the scene
              s.setScene(sc);
        
              s.show();
          }
        
          public static void main(String args[])
          {
              // launch the application
              launch(args);
          }
      }
      

      输出

    2. 创建复选框并向其添加事件处理程序的Java程序:该程序创建一个由名称 c 指示的多个 CheckBox。将创建一个事件处理程序来处理事件(切换与文本框关联的标签以描述复选框的状态)。该事件将使用 setOnAction()函数设置为复选框。 CheckBox 将在场景内创建,而场景又将托管在舞台内。函数setTitle() 用于为舞台提供标题。然后创建一个平铺窗格,调用 addChildren() 方法将 CheckBox 和标签附加到场景中。最后调用 show() 方法显示最终结果。
      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 Checkbox_2 extends Application {
        
          // launch the application
          public void start(Stage s)
          {
              // set title for the stage
              s.setTitle("creating CheckBox");
        
              // create a tile pane
              TilePane r = new TilePane();
        
              // create a label
              Label l = new Label("This is a check box");
        
              // string array
              String st[] = { "Arnab", "Andrew", "Ankit" };
        
              // add label
              r.getChildren().add(l);
        
              for (int i = 0; i < st.length; i++) {
        
                  // create a checkbox
                  CheckBox c = new CheckBox(st[i]);
        
                  // add checkbox
                  r.getChildren().add(c);
        
                  Label l1 = new Label(st[i] + " not selected");
        
                  // create a string
                  String s1 = st[i];
        
                  // create a event handler
                  EventHandler event = new EventHandler() {
        
                      public void handle(ActionEvent e)
                      {
                          if (c.isSelected())
                              l1.setText(s1 + " selected ");
                          else
                              l1.setText(s1 + " not selected ");
                      }
        
                  };
        
                  // set event to checkbox
                  c.setOnAction(event);
        
                  // add label
                  r.getChildren().add(l1);
              }
        
              // create a scene
              Scene sc = new Scene(r, 150, 200);
        
              // set the scene
              s.setScene(sc);
        
              s.show();
          }
        
          public static void main(String args[])
          {
              // launch the application
              launch(args);
          }
      }
      

      输出

    参考:https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/CheckBox.html