0

JTree jtree有一个鼠标监听器附加到它。当用户点击一个 Jtree 组件节点时,我通过它得到它的行整数

 jtree.getRowForLocation(evt.getX(), evt.getY());

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

我需要一种方法来以某种方式获取每个单击的 jtree 节点的唯一且绝对 ID,以免造成混淆。

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

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

4

2 回答 2

1

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

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

于 2011-05-28T22:31:52.640 回答
1

路径唯一地标识节点,所以getPathForLocation会给你路径,但那是一个TreePath对象,所以如果你必须有一个整数表示 ID,你需要编写一个将TreePaths 转换为整数的方法。

于 2011-05-28T22:37:08.673 回答