3

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

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

显然,对我来说,能够插入会好得多,而不是改变完整的树结构。

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

4

1 回答 1

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);
      }
   }
于 2010-06-24T13:13:05.070 回答