文档



JavaFX:使用JavaFX UI组件

6 复选框

本章介绍如何在JavaFX应用程序中添加复选框。

虽然复选框看起来与单选按钮相似,但它们不能组合成切换组,以便一次选择多个选项。有关更多信息,请参阅单选按钮和切换按钮章节。

图6-1显示了一个应用程序的屏幕截图,其中使用了三个复选框来启用或禁用应用程序工具栏中的图标。

图6-1 复选框示例

复选框示例
图6-1 复选框示例的描述

创建复选框

示例6-1创建了两个简单的复选框。

示例6-1 创建复选框

//没有标题的复选框
CheckBox cb1 = new CheckBox();
//带有字符串标题的复选框
CheckBox cb2 = new CheckBox("第二个");

cb1.setText("第一个");
cb1.setSelected(true);

创建了一个复选框后,可以使用JavaFX API提供的方法对其进行修改。在示例6-1中,setText方法定义了c1复选框的文本标题。将setSelected方法设置为true,以便在应用程序启动时选择cb1复选框。

定义状态

复选框可以被定义或未定义。当它被定义时,可以选择或取消选择它。然而,当复选框未定义时,无法选择或取消选择它。使用CheckBox类的setSelectedsetIndeterminate方法的组合来指定复选框的状态。根据复选框的INDETERMINATESELECTED属性,表6-1显示了复选框的三种状态。

表6-1 复选框的状态

属性值 复选框外观

INDETERMINATE = false

SELECTED = false

复选框未选中。

INDETERMINATE =false

SELECTED = true

复选框已选中。

INDETERMINATE = true

SELECTED = true/false

复选框未定义。


当复选框表示可以处于混合状态的UI元素时,您可能需要在应用程序中启用三种状态的复选框,例如“是”,“否”,“不适用”。CheckBox对象的allowIndeterminate属性确定复选框是否应循环显示所有三种状态:选中、未选中和未定义。如果变量为true,则控件将循环显示所有三种状态。如果为false,则控件将循环显示选中和未选中状态。下一节中描述的应用程序构建了三个复选框,并仅启用了两种状态。

设置行为

示例6-2中的代码片段中,创建了三个复选框,如果选择了复选框,则相应的图标会出现在工具栏中。

示例6-2 设置复选框的行为

final String[] names = new String[]{"安全", "项目", "图表"};
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(
        (ObservableValue<? extends Boolean> ov,
            Boolean old_val, Boolean new_val) -> {
                icon.setImage(new_val ? image : null);                
    });
}

names数组使用for循环创建了一个复选框数组和一个相应的图标数组。例如,cbs[0],即第一个复选框,被赋予了"安全"的文本标题。同时,当创建第一个图标的图像时,image[0]接收"安全.png"作为getResourceStream方法的文件名。如果选择了特定的复选框,则将相应的图像分配给图标。如果取消选择复选框,则图标接收null图像,图标不会被渲染。

图6-2显示了一个应用程序,其中选择了安全和图表复选框,取消选择了项目复选框。

图6-2 复选框应用程序示例

选择了两个复选框
"图6-2 复选框应用程序示例"的描述

相关API文档  

关闭窗口

目录

JavaFX:使用JavaFX UI组件

展开 折叠