JavaFX |复选框
CheckBox 是 JavaFX 包的一部分。 CheckBox 是一个框,选中时带有勾号,未选中时为空。起初,复选框可能看起来类似于单选按钮,但它们之间的区别在于复选框不能组合成切换组,这意味着我们不能同时选择多个选项。
CheckBox 的状态:
类的构造函数是:
- CheckBox() :创建一个带有空字符串作为其标签的复选框。
- CheckBox(String t) : 创建一个以给定文本作为标签的复选框。
常用方法:
method | explanation |
---|---|
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 的使用:
- 创建复选框并将其添加到阶段的程序:该程序创建一个由名称 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); } }
输出:
- 创建复选框并向其添加事件处理程序的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