200分救命呀,如何能唯一获得选择的JTree的结点呀,分不够再给,过年了嘛

amjn 2004-01-08 04:32:20
,我知道是JTree.getSelectionPath.getLastComponent(),但是这个只是得到结点的字符串而已,我想得到唯一的确定因素,也就是这个结点即使改名字了,还可以得到唯一的值,因为我要用这个唯一的值作为hashtable的key,所以结点名字可以改变,但是这个唯一值不能变,高手们有什么办法呀
...全文
66 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
老土豆T 2004-01-10
  • 打赏
  • 举报
回复
sun 的example里有的啊,,这里看到n+1次了:)
louisqiang 2004-01-10
  • 打赏
  • 举报
回复
利用TreePath可以得到TreeNode,而TreeNode对象在字符串改名后对象的引用是唯一的。否则重载TreeNode或TreePath在其中定义一个index,但保证index的唯一性需要下工夫了。
Fancimage 2004-01-10
  • 打赏
  • 举报
回复
DefaultMutableTreeNode作节点。
显示的是其UserObject的toString()的值.
可以定义一个类TreeNodeData:
public class TreeNodeData {
private String caption;
private Object data;
//定义构造函数
public String toString()
{
return caption;
}
//定义读写caption、data的读写器
}
用TreeNodeData的实例对象作DefaultMutableTreeNode的UserObject.
//得到当前节点:
DefaultMutableTreeNode node=(DefaultMutableTreeNode )m_tree.getSelectionPath.getLastComponent();
//得到当前节点携带的信息
TreeNodeData data=(TreeNodeData)node.getUserObject();
Leemaasn 2004-01-08
  • 打赏
  • 举报
回复
是啊。

试试楼上的?



Up。。。

^@^
louisqiang 2004-01-08
  • 打赏
  • 举报
回复
用TreeSelectionListener事件监听
public void valueChanged(TreeSelectionEvent event)
{
TreePath path = event.getPath();
System.println("Current selection is "+path.getLastPathComponent());
}
esunboy 2004-01-08
  • 打赏
  • 举报
回复
楼上的方法不正确,万一修改了jtree的接点结构,你的这些index就都不对了。
强烈建议自己写node类继承treenode,这样比较灵活。
ustbzhangwei 2004-01-08
  • 打赏
  • 举报
回复
index是这样的,同一个父节点的字节点依次是0 1 2 3 ...
0
0
0
1
1
2
1
0
0
1
1
2
2
0
1
ustbzhangwei 2004-01-08
  • 打赏
  • 举报
回复
每个节点都有一个index
用index做Hashtable的Key
esunboy 2004-01-08
  • 打赏
  • 举报
回复
可以自己写TreeNode,增加一个属性private String m_NodeId; 一个方法public String getNodeId() {return this.m_NodeId;}
以后就可以这样比较了((YouTreeNode)JTree.getSelectionPath.getLastComponent()).getNodeId(),这样就算node的名字改了也不会影响的。
guoxyj 2004-01-08
  • 打赏
  • 举报
回复
up
cbhyk 2004-01-08
  • 打赏
  • 举报
回复
tree中显示的内容是TreeNode.toString()

TreeNode的实现类是DefaultMutableTreeNode

DefaultMutableTreeNode的toString()方法返回的是getUserObject().toString();

DefaultMutableTreeNode.getUserObject()返回的才是你放到tree中的对象,如:String
amjn 2004-01-08
  • 打赏
  • 举报
回复
up
amjn 2004-01-08
  • 打赏
  • 举报
回复
是呀,关键是如何能唯一确定一个结点,让结点作为hashtable的key,即使改名字也不怕
tiger_wkh52741 2004-01-08
  • 打赏
  • 举报
回复
GZ!
cbhyk 2004-01-08
  • 打赏
  • 举报
回复
请看getLastPathComponent方法的说明:
public Object getLastPathComponent()
Returns the last component of this path. For a path returned by DefaultTreeModel this will return an instance of TreeNode.
Returns:
the Object at the end of the path
See Also:
TreePath(Object[])

返回的是Object,并不是返回的String。如果是用的DefaultTreeModel(一般来说都是用这个),返回的是TreeNode。
xiachedan 2004-01-08
  • 打赏
  • 举报
回复
关注
amjn 2004-01-08
  • 打赏
  • 举报
回复
up

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧