Java GWT TreeViewModel SelectionHandler

时间:2016-02-01 15:59:09

标签: java gwt

在我的项目中,我需要在CellTree中单击节点后触发事件。我用以下代码解决了这个问题。

model.setSelectionHandler(new SelectionChangeEvent.Handler()
{
    @Override
    public void onSelectionChange(SelectionChangeEvent event)
    {
        //My logic is here
    }
});

问题是这仅在未选择节点时才有效。再次单击该节点不会触发该事件。是否有单击处理程序或在单击节点后触发的另一个事件?

4 个答案:

答案 0 :(得分:0)

请尝试使用SelectionHandler api。

答案 1 :(得分:0)

这可以通过创建实现ClickHandler

的自己的TreeItem来实现
public class CustomTreeItem extends TreeItem implements ClickHandler
{

    //classes logic here

    @Override
    public void onClick(ClickEvent event)
    {
        // TODO Auto-generated method stub
    }
}

答案 2 :(得分:0)

有时我使用这样的东西:

number

但是这个解决方案显然会删除所选择的视觉反馈。

答案 3 :(得分:0)

您可以使用[CellTree](http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/client/ui/Widget.html#addDomHandler(H,com.google.gwt.event.dom.client.DomEvent.Type)向您的Widget.addDomHandler添加DOM处理程序:)< / p>

    cellTree.addDomHandler(new ClickHandler()
    {
        @Override
        public void onClick(ClickEvent event)
        {
            // TODO: check if a node is selected and it was clicked here
        }
    }, ClickEvent.getType());

此外,如果您同时使用选择处理程序并单击某个节点,则可能需要阻止调用处理程序两次。

只是旁注:不幸的是,我没有看到一种简单的方法来确定用户是否实际点击了树状项目,如边界检查点击坐标。所以这可能会有点难以实现。