GWT中的TreeItem ClickHandler

GWT中的TreeItem ClickHandler,gwt,Gwt,使用标准GWT2.0.3API,如何将Clickhandler添加到TreeItem?我希望实现对服务器的异步调用,以检索扩展后的树项 不幸的是,fastree在GXT应用程序中不起作用。因此,我回到了需要将处理程序附加到TreeItems的原始步骤 此代码是否有明显的缺点: Tree.addSelectionHandler(new SelectionHandler<TreeItem>() { @Override public void onSelection(Sel

使用标准GWT2.0.3API,如何将Clickhandler添加到TreeItem?我希望实现对服务器的异步调用,以检索扩展后的树项

不幸的是,
fastree
在GXT应用程序中不起作用。因此,我回到了需要将处理程序附加到
TreeItem
s的原始步骤

此代码是否有明显的缺点:

Tree.addSelectionHandler(new SelectionHandler<TreeItem>()
{
    @Override
    public void onSelection(SelectionEvent event()
    {
        if(event.getSelectedItem == someTreeItem)
        {
            //Something
        }
    }
});
Tree.addSelectionHandler(新的SelectionHandler()
{
@凌驾
选择时公共无效(SelectionEvent事件()
{
if(event.getSelectedItem==someTreeItem)
{
//某物
}
}
});

对于GWT的默认
,特定
树项
没有处理程序,整个树只有一个
选择处理程序

tree.addSelectionHandler(new SelectionHandler<TreeItem>() {
  @Override
  public void onSelection(SelectionEvent<TreeItem> event) {
    TreeItem item = event.getSelectedItem();
    // expand the selected item
  }
});
tree.addSelectionHandler(新的SelectionHandler(){
@凌驾
选举时公共无效(SelectionEvent事件){
TreeItem item=event.getSelectedItem();
//展开所选项目
}
});
然而,'s确实是为了你想做的事情而建立的,随着项目的扩展,懒洋洋地加载树,所以我就从这里开始。如果你有任何问题,请随意提问

// First create a new treeitem-class with a new method:
public class TreeItemAdv extends TreeItem {
    protected void doSelectionAction() {
        // TODO: The child should overwrite this method!
        System.out.println("The child should overwrite this method!");
    }
}

。。。
//定义您的树:
树=新树();
addSelectionHandler(新的SelectionHandler(){
@凌驾
选举时公共无效(SelectionEvent事件){
TreeItemAdv项=(TreeItemAdv)事件。getSelectedItem();
item.doSelectionAction();//执行特定于项的操作
}
});
//定义并添加您的项目:
TreeItemAdv ti1=新的TreeItemAdv(){
@凌驾
受保护的无效剂量选择(){
//托多:做些事情。
System.out.println(“1:我在这里。”);
}           
};      
ti1.setText(“第1项”);
附加项(ti1);
//及其他项目:
TreeItemAdv ti2=新的TreeItemAdv(){
@凌驾
受保护的无效剂量选择(){
//托多:做些事情。
System.out.println(“2:我在这里。”);
}           
};      
ti2.setText(“第2项”);
附加项(ti2);
...

我如何知道用户是否单击了TreeEz的根目录?当前
事件。getSelectedItem()
返回
对象
,而不是
TreeItem
。必须将其强制转换为
TreeItem
TreeItem=(TreeItem)事件。getSelectedItem();
...
    // define your tree:
    Tree tree = new Tree();
    tree.addSelectionHandler(new SelectionHandler<TreeItem>() {
        @Override
        public void onSelection(SelectionEvent<TreeItem> event) {               
            TreeItemAdv item = (TreeItemAdv) event.getSelectedItem();
            item.doSelectionAction(); // do item-specific stuff
        }
    });

    // define and add your items:
    TreeItemAdv ti1 = new TreeItemAdv() {
        @Override
        protected void doSelectionAction() {
            // TODO: Do some stuff.
            System.out.println("1: Here I am.");
        }           
    };      
    ti1.setText("Item 1");      
    tree.addItem(ti1);
    // and an other item:
    TreeItemAdv ti2 = new TreeItemAdv() {
        @Override
        protected void doSelectionAction() {
            // TODO: Do some stuff.
            System.out.println("2: Here I am.");
        }           
    };      
    ti2.setText("Item 2");      
    tree.addItem(ti2);
...