JTree:触发树节点时越界插入



我有一个JTree,一些自定义的树节点,一个扩展默认树模型的模型和一个向我的模型添加节点的线程。
这有时会以非常高的频率发生。

我的节点由用于管理其子节点的树集支持:这样子节点始终被排序。

我的模型有一个尝试添加节点的add()方法。如果已存在具有相同标识符的节点,则不会更改任何内容(根据父节点的树状图KeySet进行检查)。

每当添加节点时,都会触发 NodesInsert 事件。
问题就在这里:由于由于使用了树状图,每当添加节点时,我的树都会重新排序,因此传递给 EventListeners 的索引可能无法反映侦听器处理 NodesInsert 事件时添加的节点的位置。对于负责重新绘制的默认侦听器也是如此。

因此,在某个时候会抛出out-of-bound exception

如何使此设置线程安全?

http://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html

SortedSet s = Collections.synchronizedSortedSet(new TreeSet(...));

最新更新