点击GXT 3中的树木处理程序?

时间:2012-05-24 19:13:08

标签: event-handling tree gxt

当我点击或双击树中的某个节点时,我一直在查看GXT3's Tree API某些方法来执行操作,我似乎无法找到任何可行的方法。

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

我有什么东西可以忽略,或者有不同/更好的方法吗?

4 个答案:

答案 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