我正在尝试清除IPickTreeItem上用户选择的值。
这是我发现限制用户选择某些树根值(不是全部)的唯一解决方案。
更清楚地说,似乎调用 event.cancel() 并不能阻止事件冒泡。
难道我做错了什么 ?
TreeNode treenode = new TreeNode("root", new TreeNode("Operation A"),
new TreeNode("Operation B"));
final DynamicForm dynamicForm = new DynamicForm();
Tree tree = new Tree();
tree.setRoot(treenode);
final IPickTreeItem pickTreeItem = new IPickTreeItem();
pickTreeItem.setValueTree(tree);
pickTreeItem.addChangeHandler(new ChangeHandler()
{
@Override
public void onChange(ChangeEvent event)
{
pickTreeItem.clearValue() // Not clearing the value
pickTreeItem.setValue((String)null) // Not working neither
event.cancel() // Not seeming to work...
}
});
dynamicForm.setItems(pickTreeItem);
dynamicForm.draw();
这也不起作用:
pickTreeItem.setInputTransformer(new FormItemInputTransformer()
{
@Override
public Object transformInput(DynamicForm form, FormItem item,
Object value, Object oldValue)
{
return "Desired New Value (not working)...";
}
});
这很奇怪,因为它使用外部 Button 来清除值(在 picktreeitem 处理程序之外)
Button bt = new Button("click");
bt.addClickHandler(new ClickHandler()
{
@Override
public void onClick(ClickEvent event)
{
pickTreeItem.setValue((Object) null);
}
});
预期行为
我的树:
-aaaa
----bbbb
----cccc
-dddd
----eeee
----ffff
如果用户选择“aaaa”,则 PickTreeItem 值应恢复为默认值(“选择一个值”),可选择通知用户他不能选择“aaaa”。
PickTreeItem 应该接受“dddd”作为有效的选择值。