str*_*nko 5 java swing text jtree
我想以格式获取JTree的文本:
root
sudir1
node1
node2
subdir2
node3
node4
Run Code Online (Sandbox Code Playgroud)
可能吗?
我写了一些代码
public static String getLastSelectedText(JTree tree) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
if (node == null) return null;
return node.getUserObject().toString();
}
Run Code Online (Sandbox Code Playgroud)
但它只获得选定的组件文本.
我想扩展树和处理所有节点,但也许这是个坏主意.
我认为你不应该在一个函数中构建字符串 - 但我不知道你的问题到底是什么.
为了使我的答案尽可能接近您建议的功能,您可以尝试这样的事情:
TreeModel model = tree.getModel();
System.out.println(getTreeText(model, model.getRoot(), ""));
Run Code Online (Sandbox Code Playgroud)
具有递归功能 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;
}
Run Code Online (Sandbox Code Playgroud)
getTreeText 有三个论点
model:我们请求树节点的模型object:我们要求字符串表示的对象(包括所有子项)indent:缩进级别