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

标签 java swing jtree

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

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

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

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

最佳答案

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

关于java - 调用 treeNodesInserted 后,TreeModel 的自定义实现拒绝重新绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3021697/

相关文章:

java - 数据库添加项目到 ListView ?

Java Arraylist to Map速度比较

java - jpa 独立自定义类型映射/javax.persistence.x 替代 org.hibernate.annotations.Type 和 org.hibernate.annotations.TypeDef

GUI中的java温度转换

java - Java 中非常基本的终端

java - 带有自定义打开/关闭图标的自定义 JTree 单元渲染器

Java SSL 握手异常 "no cipher suites in common"

java - 如何将不断变化的 JTextArea 放到 JScrollPane 中?

java - JTree 和 JButtons - 鼠标悬停在 Button 上时渲染错误

java - 将自定义属性添加到 JTree 节点