我正在为JTree使用自定义TreeModel。我在我的TreeModel中插入一个新节点时遇到问题,然后在所有TreeModelListeners上调用treeNodesInserted(TreeModelEvent)。
我认为这个问题与JTree.TreeModelHandler没有实现treeNodesInserted(e)的事实有关,只有treeStructureChanged(e)
对我而言,显然能够插入,而不是更改完整的树结构会更好。
有解决方法吗? (我不能使用DefaultTreeModel)
答案 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);
}
}