JTree:如何获取所有项目的文本? [英] JTree: how to get the text of all items?

查看:129
本文介绍了JTree:如何获取所有项目的文本?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望以格式获取JTree的文本:

I want to get text of an JTree in format:

root
  sudir1
    node1
    node2
  subdir2
    node3
    node4

是吗可能?

我写了一些代码

public static String getLastSelectedText(JTree tree) {
    DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
    if (node == null) return null;
    return node.getUserObject().toString();
}

但它只获得选定的组件文本。

But it get only selected component text.

我考虑扩展树并处理所有节点,但也许不太好主意。

I think about expand tree and handle all nodes, but maybe it bad idea.

推荐答案

我认为你不应该在一个函数中构建字符串 - 但我不知道你的问题究竟是针对什么的。

I think you shouldn't build the string within a single function - but I do not know what exactly you aim at with your question.

为了使我的答案尽可能接近你建议的功能尽可能尝试这样:

In order to keep my answer as close to your suggested function as possible you may try something like this:

TreeModel model = tree.getModel();
System.out.println(getTreeText(model, model.getRoot(), ""));

带递归函数 getTreeText

private static String getTreeText(TreeModel model, Object object, String indent) {
    String myRow = indent + object + "\n";
    for (int i = 0; i < model.getChildCount(object); i++) {
        myRow += getTreeText(model, model.getChild(object, i), indent + "  ");
    }
    return myRow;
}

getTreeText 需要三个参数


  • model :我们请求树节点的模型

  • object :我们要求字符串表示的对象(包括所有孩子)

  • 缩进:缩进级别

  • model: The model which we request for tree nodes
  • object: The object we ask a string representation for (including all children)
  • indent: indentation level

这篇关于JTree:如何获取所有项目的文本?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆