我正在为 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/