大家好,首先我是使用 SmartGWT 的菜鸟,我有一个带有 setVisible(false) 的 SelectItem 组件并添加到 DynamicForm 中。这个 DynamicForm 被添加到一个布局中。当另一个组件发生变化时,我需要将 SelectItem with visible 设置为 true。
我这样做:
SelectItem -> setVisible(true);
DynamicForm -> .redraw();
Layout -> .redraw();
大家好,首先我是使用 SmartGWT 的菜鸟,我有一个带有 setVisible(false) 的 SelectItem 组件并添加到 DynamicForm 中。这个 DynamicForm 被添加到一个布局中。当另一个组件发生变化时,我需要将 SelectItem with visible 设置为 true。
我这样做:
SelectItem -> setVisible(true);
DynamicForm -> .redraw();
Layout -> .redraw();
以下代码有效,并在单击按钮时切换 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