单击 GXT 3 中树的处理程序



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

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

我是否忽略了什么,或者有不同/更好的方法来做到这一点?

使用TreePanel的选择模型:

treePanel.getSelectionModel().addSelectionChangedListener(
        new SelectionChangedListener<BaseTreeModel>() {
            @Override
            public void selectionChanged(SelectionChangedEvent<BaseTreeModel> se) {
                BaseTreeModel selectedItem = se.getSelectedItem();
                // implement functionality
            }
        }
);

有关参考,请参阅 TreePanel API。

将其用于单选

    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);
   }
};

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

相关内容

  • 没有找到相关文章

最新更新