0

大家好,首先我是使用 SmartGWT 的菜鸟,我有一个带有 setVisible(false) 的 SelectItem 组件并添加到 DynamicForm 中。这个 DynamicForm 被添加到一个布局中。当另一个组件发生变化时,我需要将 SelectItem with visible 设置为 true。

我这样做:

SelectItem -> setVisible(true);
DynamicForm -> .redraw();
Layout -> .redraw();
4

1 回答 1

2

以下代码有效,并在单击按钮时切换 SelectItem 的可见性。

但是请注意,这可能会导致 UI 跳动,因为其他表单控件流入和流出以填补空白。

更好的方法是启用/禁用注释中指示的组件,这不需要重绘。

final DynamicForm form = new DynamicForm();
form.setWidth100();
form.setHeight100();

final SelectItem selectItem = new SelectItem("sel", "Select");
selectItem.setValueMap("First", "Second", "Third");

ButtonItem buttonItem = new ButtonItem("btn", "Set");
buttonItem.addClickHandler(new ClickHandler() {
    public void onClick(ClickEvent event) {
        selectItem.setVisible(!selectItem.getVisible());
        form.redraw();

        // uncomment following two lines and comment above two lines to enable/disable

        // boolean isDisabled = Boolean.TRUE.equals(selectItem.getDisabled());
        // selectItem.setDisabled(!isDisabled);
    }
});

form.setFields(selectItem, buttonItem);

其他处理表单布局的方法:
http ://www.smartclient.com/smartgwt/showcase/#layout_form_sections
http://www.smartclient.com/smartgwt/showcase/#layout_form_splitting

于 2013-08-12T14:49:32.910 回答