翻译自 Checkbox
本章教授如何向JavaFX应用程序添加复选框。
虽然复选框看起来类似于单选按钮,但它们不能组合到切换组中以便一次选择多个选项。有关详细信息,请参阅单选按钮和切换按钮章节。
图6-1显示了一个应用程序的屏幕截图,其中三个复选框用于启用或禁用应用程序工具栏中的图标。
图6-1复选框示例
创建复选框
例6-1创建了两个简单的复选框。
示例6-1创建复选框
//A checkbox without a caption
CheckBox cb1 = new CheckBox();
//A checkbox with a string caption
CheckBox cb2 = new CheckBox("Second");cb1.setText("First");
cb1.setSelected(true);
创建复选框后,可以使用JavaFX API提供的方法对其进行修改。在示例6-1中,该setText
方法定义了c1复选框的文本标题。该setSelected
方法设置为true
在启动应用程序时选择cb1复选框。
定义一个国家
复选框可以是已定义的,也可以是未定义的。定义后,您可以选择或取消选择它。但是,如果未定义复选框,则无法选择或取消选中该复选框。使用类的setSelected
和setIndeterminate
方法的组合CheckBox
来指定复选框的状态。表6-1显示了基于其属性INDETERMINATE
和复选框的复选框的三种状态SELECTED
。
表6-1复选框的状态
属性值 | 复选框外观 |
---|---|
| |
| |
|
当应用程序中的复选框表示可处于混合状态的UI元素时,您可能需要为应用程序中的复选框启用三种状态,例如“是”,“否”,“不适用”。对象的allowIndeterminate
属性CheckBox
确定复选框是否应循环通过所有三种状态:selected,deselected和undefined。如果变量是true
,则控件将循环通过所有三个状态。如果是false
,控件将循环选择和取消选择状态。下一节中描述的应用程序构造了三个复选框,并且只为它们启用两个状态。
设置行为
示例6-2中的代码片段创建了三个复选框,这样,如果选中了复选框,则相应的图标将显示在工具栏中。
示例6-2设置复选框的行为
final String[] names = new String[]{"Security", "Project", "Chart"};
final Image[] images = new Image[names.length];
final ImageView[] icons = new ImageView[names.length];
final CheckBox[] cbs = new CheckBox[names.length];for (int i = 0; i < names.length; i++) {final Image image = images[i] =new Image(getClass().getResourceAsStream(names[i] + ".png"));final ImageView icon = icons[i] = new ImageView();final CheckBox cb = cbs[i] = new CheckBox(names[i]);cb.selectedProperty().addListener(new ChangeListener<Boolean>() {public void changed(ObservableValue<? extends Boolean> ov,Boolean old_val, Boolean new_val) {icon.setImage(new_val ? image : null);}});
}
该names
数组使用for
循环创建一个复选框数组和相应的图标数组。例如,第一个复选框cbs [0]被分配了“安全”文本标题。同时,getResourceStream
当创建第一个图标的图像时,image [0]接收“Security.png”作为该方法的文件名。如果选择了特定复选框,则会将相应的图像分配给图标。如果取消选中复选框,则图标将接收null
图像,并且不会呈现图标。
图6-2显示了选择Security和Chart复选框并取消选中Project复选框时的应用程序。
图6-2 Checkbox应用程序的运行情况
设置复选框的样式
图6-2中的复选框具有类的默认外观CheckBox
。您可以使用该setStyle
方法更改复选框的外观,如例6-3所示。
示例6-3为复选框设置样式
cb1.setStyle("-fx-border-color: lightblue; "+ "-fx-font-size: 20;"+ "-fx-border-insets: -5; "+ "-fx-border-radius: 5;"+ "-fx-border-style: dotted;"+ "-fx-border-width: 2;"
);
新样式包括一个点缀浅蓝色边框和增加其文本标题的字体大小。图6-3显示了应用此样式的cb1复选框。
图6-3样式复选框
要为应用程序中的所有复选框设置特定样式,请使用以下过程:
-
创建.css文件。
-
checkbox
在.css文件中创建CSS类。 -
定义
checkbox
CSS类中的所有必需样式。 -
在JavaFX应用程序中,使用该
setStyleClass
方法启用样式表。
相关的API文档
-
CheckBox
-
JavaFX CSS规范