从零开始学习JavaFX(10) 控件篇之CheckBox

本文中将会讲述CheckBox的使用。

CheckBox通常跟RadioButton看起来很相似,不过加入同一个ToggleGroup的CheckBox允许多个选中,这是与RadioButton最大的区别。

创建CheckBox

//创建一个无文本的CheckBox
CheckBox cb1 = new CheckBox();
//创建一个带有文本的CheckBox
CheckBox cb2 = new CheckBox("Second");

cb1.setText("First");
cb1.setSelected(true);

通过setText来设置文本,setSelected来设置当前选中的状态。

定义状态

CheckBox通常情况下,有选中或者不选中状态。但也有一种中立的状态,既非选中,也非没选中。通过setSelected和setIndeterminate方法结合使用。

如下图所示:

监听事件

如果我们需要监听CheckBox选中等的事件,同样需要监听Property,如下:

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(
        (ObservableValue<? extends Boolean> ov,
            Boolean old_val, Boolean new_val) -> {
                icon.setImage(new_val ? image : null);                
    });
}

主要实现的是多个CheckBox,通过选中来显示相应的ImageView中的图片。

运行效果如下:

总的来说,也是个非常简单的控件。

发表评论

电子邮件地址不会被公开。