Java:当Jtree扩展节点或折叠节点时,getRowForLocation()返回不同的行int

时间:2011-05-28 22:19:15

标签: java jtree dom4j

JTree jtree附加了一个鼠标监听器。当用户点击Jtree组件节点时,我通过

得到它的行整数
 jtree.getRowForLocation(evt.getX(), evt.getY());

问题是当有jtree节点被展开并且它被折叠时,返回行整数是不同的。

我需要一种方法以某种方式获得每个点击的jtree节点的唯一且绝对ID,以便不会产生混淆。

有没有办法将数据添加到Jtree组件?

否则,我需要一种方法来监听节点何时展开并重新计算从上面的函数返回的行....

2 个答案:

答案 0 :(得分:1)

在当前的方法中,您依靠树视图的状态来标识节点。但是,正如您所知,视图的状态可能会发生变化。不会改变的是视图底层的树模型。

如果您需要每个节点的唯一ID,则应将其直接添加到树模型中的每个树节点。在鼠标侦听器中,您可以检测单击的节点并访问其唯一ID。

答案 1 :(得分:1)

路径唯一地标识节点,因此getPathForLocation将为您提供路径,但这是一个TreePath对象,因此如果您必须有一个整数表示ID,您需要编写一个方法,将TreePath转换为整数。