Java JTree获取所选节点的名称

时间:2014-01-13 18:09:40

标签: java swing jtree treenode

我想了解如何在JTree中获取所选节点的名称,而不是作为treenode文本的userObject。

我手动创建了几个树节点,我需要确定节点名称选择了哪一个。

DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root"); 
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("Hey it's node1!");
DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("Hey, it's node2!");
root.add(node1); root.add(node2); 

现在,基于此,我需要知道是否选择了node1或node2。我想要一个node1或node2(变量名)的返回值。

为了更清楚:我有一个JFrame,一个JPanel,一个JScrollPane,一个JTree和一些文本字段。根据单击的节点(节点1或节点2),我想显示或隐藏某些文本字段。

2 个答案:

答案 0 :(得分:2)

如果我希望我的Node有一个名字,我会扩展基类,这里是DefaultMutableTreeNode,并给它一个String name字段,然后通过构造函数用一个值填充该字段,一个带有两个字符串name参数和String文本参数。然后还给它一个getter方法。

我不会尝试获得它的“变量”名称,因为它接近于无意义。许多变量甚至没有“名称”,一个对象可以被2,3,100 ......变量引用。


修改
您在编辑中说明:

  

为了更清楚:我有一个JFrame,一个JPanel,一个JScrollPane,一个JTree和一些文本字段。根据单击的节点(节点1或节点2),我想显示或隐藏某些文本字段。

同样,变量名称几乎没有意义,在编译代码中几乎不存在。重要的是变量引用 - 能够获取变量,以及对象 state - 该变量所持有的字段的状态。

答案 1 :(得分:0)

有点旧的线程,但是我认为您不必派生任何类。使用可选参数userObj初始化DefaultMutableTreeNode对象时,可以通过调用getUserObject()再次获取此参数。有关更多信息,请参见api:https://docs.oracle.com/javase/10/docs/api/javax/swing/tree/DefaultMutableTreeNode.html

我认为您正在寻找的东西差不多-至少我在寻找它。