【问题标题】:Java JTree get name of selected nodeJava JTree 获取选定节点的名称
【发布时间】:2023-03-30 01:57:01
【问题描述】:

我想了解如何在 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),我想显示或隐藏某些文本字段。

【问题讨论】:

  • 节点的“名称”是什么意思?这不取决于您的节点对象的结构吗?您尝试了哪些方法,但效果如何?
  • DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root"); DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("嘿,这是 node1!"); DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("嘿,是node2!"); root.add(node1); root.add(node2);现在,基于此,我需要知道是否选择了 node1 或 node2。我想要 node1 或 node2 的返回值。
  • 好的,.....那么,“名称”是什么意思?如果这就是你的意思,变量名没有什么意义和实用性。
  • 这是经典的XY problem
  • @AndrewThompson:阿门!他没有意识到变量名称几乎毫无意义,许多变量甚至没有“名称”,一个对象可以被 2、3、100,... 变量引用。这个问题没有意义。他必须描述他试图解决的问题,而不是他试图解决的方式,因为他肯定是走错了路。

标签: java swing jtree treenode


【解决方案1】:

如果我想让我的节点有一个名字,我会扩展基类,这里是 DefaultMutableTreeNode,并给它一个字符串名称字段,然后通过一个构造函数用一个值填充该字段,这个构造函数同时接受一个字符串名称参数和字符串文本参数。然后也给它一个getter方法。

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


编辑
您在编辑中声明:

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

同样,变量名几乎没有意义,几乎不存在于编译代码中。重要的是变量references——能够抓取一个变量,而对象state——该变量所持有的字段的状态。

【讨论】:

  • 谢谢! Hovercraft Full Of Eels - 我需要的是覆盖构造函数并添加 set/get name 方法的想法。感谢您的帮助!
【解决方案2】:

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

我认为这几乎就是您正在寻找的东西 - 至少我一直在寻找它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-15
    • 2011-12-10
    • 2012-08-02
    • 2011-07-04
    • 2014-12-25
    • 1970-01-01
    • 2013-01-01
    • 2015-09-12
    相关资源
    最近更新 更多