Пользовательская реализация TreeModel отказывается перерисовываться после вызова treeNodesInserted - PullRequest
3 голосов
/ 11 июня 2010

Я использую пользовательскую TreeModel для JTree. У меня есть проблема, когда я вставляю новый узел в мою TreeModel, а затем вызываю treeNodesInserted (TreeModelEvent) для всех моих TreeModelListeners.

Я думаю, что проблема связана с тем фактом, что JTree.TreeModelHandler не имеет реализации для treeNodesInserted (e), только treeStructureChanged (e)

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

Есть ли обходной путь? (Я не могу использовать DefaultTreeModel)

1 Ответ

1 голос
/ 24 июня 2010

Некоторые подробности помогут. Но я сделал то же самое без проблем. В моем случае у меня MyTreeModel реализует TreeModel, и в него входит функция fireTreeInserts.

Функция выглядит примерно так (очищенный код приложения):

   public void fireTreeInsert(TreePath path, Object child) {
      Object[] children = {child};
      int index = this.getIndexOfChild(path.getLastPathComponent(), child);
      int[] indicies = {index};
      TreeModelEvent e = new TreeModelEvent(this, path, indicies, children);
      EventListener[] listeners = mTreeModel.getListeners(TreeModelListener.class);
      for (int ii = 0; ii < listeners.length; ii++) {
         ((TreeModelListener)listeners[ii]).treeNodesInserted(e);
      }
   }
...