在GWT中获取所选树项目的索引?

问题描述:

我正在尝试一个GWT应用程序。我有一棵树,里面有很多树木物品。我想检索树中所选项目的索引。我看到Tree类没有像getSelectedElementIndex()这样的方法。有没有解决方法?在GWT中获取所选树项目的索引?

您可以注册并通过addSelectionHandler注册并SelectionHandler。选择项目时发生的事件返回所选的TreeItem对象。

另外Tree有一个方法getSelectedItem(),它返回一个TreeItem。类TreeItem有一个方法getChildIndex需要一个TreeItem并返回索引。此外,与item.getParentItem().getChildIndex(item)你应该得到该项目的索引。

+0

item.getParentItem()返回null。 –

渲染每个树项目时,可以将索引存储为setLayoutData。当你需要时你可以从getLayoutData中获得它。任何对象都可以存储在这里。我希望这能解决你的问题。

+0

尽管导入java.lang.Object,但我无法为TreeItem对象使用setLayoutData方法。 – somesh

+0

是的,我错了。由于TreeItem不是Widget扩展的UIObject,因此无法在TreeItem上调用setLayoutData方法。 – Thamizharasu

您可以编写自己的函数来做到这一点:

int getTreeItemIndex(Tree tree, TreeItem item) 
{ 
    int count = tree.getItemCount(); 
    for (int i=0;i<count;i++) 
    { 
     TreeItem test = tree.getItem(i); 
     if (test == item) 
     { 
      return i; 
     } 
    } 
    return -1; 
} 

这只会搜索树对象的直接孩子,并返回-1,如果没有找到它。