当我点击或双击树中的某个节点时,我一直在查看GXT3's Tree
API某些方法来执行操作,我似乎无法找到任何可行的方法。
我知道TreeGrid
有一个CellClickHandler
和CellDoubleClick
处理程序,但Tree
似乎没有任何相似之处。存在从addHandler
继承的通用Widget
方法,但这似乎适用于整个树,而不是特定节点。
我有什么东西可以忽略,或者有不同/更好的方法吗?
答案 0 :(得分:2)
使用TreePanel
的选择模型:
treePanel.getSelectionModel().addSelectionChangedListener(
new SelectionChangedListener<BaseTreeModel>() {
@Override
public void selectionChanged(SelectionChangedEvent<BaseTreeModel> se) {
BaseTreeModel selectedItem = se.getSelectedItem();
// implement functionality
}
}
);
请参阅TreePanel
API以获取参考资料。
答案 1 :(得分:2)
另一种选择是覆盖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);
}
};
答案 2 :(得分:1)
将其用于单一选择
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());
}
});
答案 3 :(得分:0)
想出来。这可以通过使用Cell Action Tree来实现,其实现可以在这里找到:http://www.sencha.com/examples/#ExamplePlace:cellactiontree