TreeModel的自定义实现在调用treeNodesInserted后拒绝重新绘制

时间:2010-06-11 09:34:31

标签: java swing jtree

我正在为JTree使用自定义TreeModel。我在我的TreeModel中插入一个新节点时遇到问题,然后在所有TreeModelListeners上调用treeNodesInserted(TreeModelEvent)。

我认为这个问题与JTree.TreeModelHandler没有实现treeNodesInserted(e)的事实有关,只有treeStructureChanged(e)

对我而言,显然能够插入,而不是更改完整的树结构会更好。

有解决方法吗? (我不能使用DefaultTreeModel)

1 个答案:

答案 0 :(得分:1)

更多细节会有所帮助。但我做了类似的事情,没有任何问题。在我的情况下,我有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);
      }
   }