CheckBox

CheckBox - 复选框 是一个拥有两个状态的组件: 选中或者未选中。

组件的 XML 名称:checkBox

check box

基本用法

示例:

<checkBox id="checkBox"
          caption="Create new document"/>

勾选或者取消勾选复选框会改变它的值为 Boolean.TRUE 或者 Boolean.FALSE。这个值可以通过 getValue() 方法获取,也可以通过 setValue() 方法设置。通过 setValue() 设置 null 的话,会把值改成 Boolean.FALSE 然后取消复选框的选择。

数据感知的 CheckBox

如需创建关联至数据的 CheckBox,可以用 XML 的 dataContainerproperty 属性。

<data>
    <instance id="userDc" class="ui.ex1.entity.User">
        <loader/>
    </instance>
</data>
<layout>
        <checkBox dataContainer="userDc"
                  property="enabled"
                  caption="User Property"/>
</layout>

从这个例子可以看出,这个界面包含了一个关联 User 实体的 userDcUser 实体具有 enabled 属性。CheckBoxdataContainer 属性需要指向一个数据容器;property 属性需要指向实体中需要展示到 CheckBox 的字段名字,这个字段必须要是 Boolean 类型。

样式

CheckBox 的外观可以使用带 $jmix-checkbox-* 前缀的 SCSS 变量进行自定义。

事件和处理器

如需使用 Jmix Studio 生成处理器的桩代码,需要在界面 XML 描述或者 Component Hierarchy 面板选中该组件,然后用 Component Inspector 面板的 Handlers 标签页生成。

或者可以使用界面控制器顶部面板的 Generate Handler 按钮。

ContextHelpIconClickHandler

Validator

为组件添加 validator 实例。如果值验证失败,validator 必须抛出 ValidationException 异常。

@Install(to = "checkBoxValid", subject = "validator")
protected void checkBoxValidValidator(Boolean value) {
    if (!value)
        throw new ValidationException("You must accept the terms of the license");
}

ValueChangeEvent

可以用 ValueChangeListener 方法跟踪 CheckBox 值的变化,示例:

@Autowired
private Notifications notifications;

@Subscribe("checkBox")
protected void onCheckBoxValueChange(HasValue.ValueChangeEvent<Boolean> event) {
    if (Boolean.TRUE.equals(event.getValue())) {
        notifications.create()
                .withCaption("set")
                .show();
    } else {
        notifications.create()
                .withCaption("not set")
                .show();
    }
}

CheckBox XML 属性

可以使用 Studio 界面设计器的 Component Inspector 面板查看和编辑组件的属性。