当我单击或双击树中的节点时,我一直在通过GXT3 的Tree
API寻找某种方式来执行操作,但我似乎找不到任何可行的方法。
我知道TreeGrid
有一个CellClickHandler
和CellDoubleClick
处理程序,但似乎没有任何类似的Tree
. addHandler
有继承自的通用方法,Widget
但这似乎适用于整个树,而不是特定节点。
有没有我忽略的东西,或者有不同/更好的方法来做到这一点?
当我单击或双击树中的节点时,我一直在通过GXT3 的Tree
API寻找某种方式来执行操作,但我似乎找不到任何可行的方法。
我知道TreeGrid
有一个CellClickHandler
和CellDoubleClick
处理程序,但似乎没有任何类似的Tree
. addHandler
有继承自的通用方法,Widget
但这似乎适用于整个树,而不是特定节点。
有没有我忽略的东西,或者有不同/更好的方法来做到这一点?
将此用于单选
tree.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
tree.getSelectionModel().addSelectionHandler(new SelectionHandler<MenuView.MenuDto>() {
public void onSelection(SelectionEvent<MenuDto> event) {
MenuDto mnu = event.getSelectedItem();
Info.display("Tree Handler", mnu.getDescripcion());
}
});
对于多项选择
tree.getSelectionModel().addSelectionChangedHandler(new SelectionChangedHandler<MenuView.MenuDto>() {
public void onSelectionChanged(SelectionChangedEvent<MenuDto> event) {
List<MenuDto> mnus = event.getSelection();
Info.display("Tree Handler", mnus.get(0).getDescripcion());
}
});
另一种选择是覆盖 Tree 的 onDoubleClick(或 onClick)方法:
Tree tree = new Tree<MyModel, String>(store, valueProvider){
@Override
protected void onDoubleClick(Event event) {
TreeNode<MyModel> node = findNode(event.getEventTarget().<Element> cast());
Info.display("Double Click", "You double clicked this node!");
super.onDoubleClick(event);
}
};
使用TreePanel
的选择模型:
treePanel.getSelectionModel().addSelectionChangedListener(
new SelectionChangedListener<BaseTreeModel>() {
@Override
public void selectionChanged(SelectionChangedEvent<BaseTreeModel> se) {
BaseTreeModel selectedItem = se.getSelectedItem();
// implement functionality
}
}
);
请参阅TreePanel
API以获取参考。
想通了。这可以通过使用单元格操作树来实现,可以在此处找到其实现:http ://www.sencha.com/examples/#ExamplePlace:cellactiontree