2014-01-06 2 views
1

Я пробовал приложение GWT. У меня есть дерево, в котором много элементов дерева. Я хочу получить индекс элемента, выбранного в дереве. Я вижу, что в классе Tree нет метода getSelectedElementIndex(). Есть ли обходной путь для этого?Получение индекса выбранного элемента дерева в GWT?

ответ

1

Вы можете зарегистрироваться и SelectionHandler, через addSelectionHandler. Событие, заданное при выборе элемента, возвращает выбранный объект TreeItem.

Также Tree имеет способ getSelectedItem(), который возвращает TreeItem. Класс TreeItem имеет метод getChildIndex, который принимает TreeItem и возвращает индекс. Далее, с item.getParentItem().getChildIndex(item) вы должны получить индекс этого элемента.

+0

item.getParentItem() возврат null. –

-1

При визуализации каждого элемента дерева вы можете сохранить индекс как setLayoutData. Когда вам потребуется, вы можете получить его из getLayoutData. Здесь можно сохранить любой объект. Надеюсь, это решит вашу проблему.

+0

Мне не удалось использовать метод setLayoutData для объекта TreeItem, несмотря на импорт java.lang.Object. – somesh

+0

Да, я ошибаюсь. Поскольку TreeItem - это UIObject, а не расширение Widget, вы не можете вызвать метод setLayoutData в TreeItem. – Thamizharasu

0

Вы можете написать свою собственную функцию, чтобы сделать это:

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; 
} 

Это будет искать только прямые дети объекта Tree и возвращает -1, если он не был найден.

Смежные вопросы