3

JTreeにカスタムTreeModelを使用しています。TreeModelに新しいノードを挿入してから、すべてのTreeModelListenerで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 に答える