在GWT中获取所选树项目的索引?
我正在尝试一个GWT应用程序。我有一棵树,里面有很多树木物品。我想检索树中所选项目的索引。我看到Tree类没有像getSelectedElementIndex()这样的方法。有没有解决方法?在GWT中获取所选树项目的索引?
您可以注册并通过addSelectionHandler
注册并SelectionHandler
。选择项目时发生的事件返回所选的TreeItem
对象。
另外Tree
有一个方法getSelectedItem()
,它返回一个TreeItem
。类TreeItem
有一个方法getChildIndex
需要一个TreeItem
并返回索引。此外,与item.getParentItem().getChildIndex(item)
你应该得到该项目的索引。
渲染每个树项目时,可以将索引存储为setLayoutData。当你需要时你可以从getLayoutData中获得它。任何对象都可以存储在这里。我希望这能解决你的问题。
尽管导入java.lang.Object,但我无法为TreeItem对象使用setLayoutData方法。 – somesh
是的,我错了。由于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,如果没有找到它。
item.getParentItem()返回null。 –