Java TreeViewer добавить элемент

в основном я работаю с просмотрщиком деревьев на Java (org.eclipse.jface.viewers.TreeViewer). Теперь моя проблема в том, что я хочу добавить дочерний элемент/элемент к существующему узлу.

Прежде всего, мое дерево выглядит так:

Knot A
Knot B
Knot C
 >child1
 >child2

Эти дочерние элементы (child1, child2) не добавляются вручную, они генерируются до того, как я возьму в руки само дерево.

  1. Я создаю просмотрщик дерева: viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
  2. Я заполняю дерево просмотра: viewer.setInput(....elements());, которое генерирует состояние сверху.

  3. viewer.getTree().getItem(0) возвращает правильный узел A моего дерева.

Но я не могу добавить нового ребенка к существующему узлу. Я пробовал следующие и другие вещи:

TreeItem newItem = new TreeItem(items[0], SWT.NONE); and viewer.add(items[0], newItem); with a newly created item viewer.refresh();

Теоретически я мог бы манипулировать arrayList, который в первую очередь заполняет средство просмотра дерева, но я думаю, что это было бы очень плохо.

Я действительно не знаю, что я делаю неправильно прямо сейчас. Я думаю, это довольно глупый вопрос. Если это так, то мне жаль. ^^

Спасибо за вашу помощь, я благодарен за каждый намек, который вы можете предложить.


person phiLoX    schedule 27.06.2014    source источник


Ответы (1)


Обновление вашей «модели» (данные, которые вы предоставляете setInput) — это правильный способ обновления дерева. Вызовите TreeViewer.refresh() или TreeViewer.refresh(element), чтобы средство просмотра дерева обновило дерево из модели.

Когда вы используете TreeViewer, вы никогда не создаете объекты TreeItem — это делает программа просмотра. Все, что вы передаете методам refresh, update, add..., является объектами вашей модели, а не TreeItems.

person greg-449    schedule 27.06.2014
comment
Большое спасибо, это мне очень помогло. ^^ - person phiLoX; 27.06.2014