【问题标题】:change the jtree node text runtime更改 jtree 节点文本运行时
【发布时间】:2013-04-07 10:40:03
【问题描述】:

我正在尝试在 java swing 中创建一个 JTree,现在我想在运行时更改节点文本

try
 {

int a=1,b=2,c=3;
 DefaultMutableTreeNode root =
new DefaultMutableTreeNode("A"+a);
DefaultMutableTreeNode child[]=new DefaultMutableTreeNode[1];
DefaultMutableTreeNode grandChild[]= new DefaultMutableTreeNode[1];

child[0] = new DefaultMutableTreeNode("Central Excise"+b);
  grandChild[0]=new DefaultMutableTreeNode("CE Acts: "+c);
child[0].add(grandChild[0]);
 root.add(child[0]);
tree = new JTree(root);
 }
 catch(Exception ex)

 {
  ex.printStackTrace()
 }

现在我想知道如何在子节点和大子节点中以类似方式动态地将 A 1 更改为 2

【问题讨论】:

    标签: java swing jtree


    【解决方案1】:

    您正在寻找javax.swing.tree.DefaultMutableTreeNode.setUserObject(Object)

    DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
    DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot();
    root.setUserObject("My label");
    model.nodeChanged(root);
    

    这假设您使用的是DefautltTreeModel

    【讨论】:

      【解决方案2】:

      如果您没有使用自定义 TreeModel,那么您的树模型是 DefaultTreeModel

      考虑到您的 DefaultMutableTreeNode getUserObject(),您需要使用 某种比较器 来遍历树> (字符串或其他)来实现你想要的。

      根据您的问题和粘贴的代码,您有 2 个 简单 选项:

      • 如果您的更改是由点击事件触发的,您可以获取选择并从那里遍历树。
      • 否则,您需要从根部开始遍历树

      更改成功后,您需要从模型中触发事件,这些事件将在稍后触发视图的重绘(nodesWereInserted 等)。

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2019-12-03
        • 2014-07-31
        • 1970-01-01
        • 1970-01-01
        • 2011-07-04
        • 2011-01-13
        • 2012-06-20
        • 2011-09-03
        • 1970-01-01
        相关资源
        最近更新 更多