3

当我单击或双击树中的节点时,我一直在通过GXT3 的TreeAPI寻找某种方式来执行操作,但我似乎找不到任何可行的方法。

我知道TreeGrid有一个CellClickHandlerCellDoubleClick处理程序,但似乎没有任何类似的Tree. addHandler有继承自的通用方法,Widget但这似乎适用于整个树,而不是特定节点。

有没有我忽略的东西,或者有不同/更好的方法来做到这一点?

4

4 回答 4

2

将此用于单选

    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());
        }
    });
于 2012-06-13T20:06:02.393 回答
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);
   }
};
于 2012-06-18T17:59:14.917 回答
2

使用TreePanel的选择模型:

treePanel.getSelectionModel().addSelectionChangedListener(
        new SelectionChangedListener<BaseTreeModel>() {

            @Override
            public void selectionChanged(SelectionChangedEvent<BaseTreeModel> se) {

                BaseTreeModel selectedItem = se.getSelectedItem();

                // implement functionality
            }
        }
);

请参阅TreePanelAPI以获取参考。

于 2012-05-25T14:14:20.597 回答
0

想通了。这可以通过使用单元格操作树来实现,可以在此处找到其实现:http ://www.sencha.com/examples/#ExamplePlace:cellactiontree

于 2012-05-25T18:06:42.553 回答