Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使JTree只显示字符串而不显示文件结构_Java_Swing_Jtree_Treenode_Treemodel - Fatal编程技术网

Java 如何使JTree只显示字符串而不显示文件结构

Java 如何使JTree只显示字符串而不显示文件结构,java,swing,jtree,treenode,treemodel,Java,Swing,Jtree,Treenode,Treemodel,我目前正在做一个客户机-服务器项目,客户机向服务器发送请求,服务器根据客户机的信息运行数据库语句。由于输出没有静态长度,我将所有数据添加到ArrayList并将其发送回客户端 客户机请求的数据具有特定的层次结构,因此也可以使用XML文件显示它(但是这里需要输出到GUI,而不是创建文件)。我想出了几种展示方式。一个是使用一个简单的文本区域,但是使用这个,我需要自己应用布局,折叠的选项,在那里我可以展开和折叠某些项目是不可能的 当然,另一种可能是使用一个简单的JList,但我在Stackoverfl

我目前正在做一个客户机-服务器项目,客户机向服务器发送请求,服务器根据客户机的信息运行数据库语句。由于输出没有静态长度,我将所有数据添加到
ArrayList
并将其发送回客户端

客户机请求的数据具有特定的层次结构,因此也可以使用XML文件显示它(但是这里需要输出到GUI,而不是创建文件)。我想出了几种展示方式。一个是使用一个简单的文本区域,但是使用这个,我需要自己应用布局,折叠的选项,在那里我可以展开和折叠某些项目是不可能的

当然,另一种可能是使用一个简单的JList,但我在Stackoverflow上读到,使用JList来显示层次结构的东西比使用JTree容易得多

当我决定尝试实现JTree时,我还在他们的应用程序中找到了Oracle提供的文件。正如在本文档的第一个示例中所看到的,始终会显示文件结构,因此也会显示文件结构类型的表示(使用文件夹和文件符号)。与此相反,generalogy.java只显示人员的姓名,因此我尝试将generalogy.java的实现应用到我的案例中,但是我完全不知道如何实现这一点,因为我甚至不知道这些符号来自何处,也不知道我可以在何处禁用它们,也不知道我需要哪些方法实现你所做的

由于我目前真的不知道如何实现这一点,我真的需要一些详细的帮助(只是告诉我自己实现JTree或TreeNode在这一点上并没有真正帮助我)。是否有更简单的方法,或者实现上述接口的必要性是否不可避免?如果是,将如何实现


编辑:

这是当前的显示方式(示例取自Oracle文档,在字符串前面显示文件夹和文件符号):

这就是我希望它的显示方式(同样来自文档,这次只显示一个字符串作为节点):


答案几乎肯定会通过用于树节点的(TreeCellRenderer的图标)找到。有关提示,请参阅。它显示了如何在
FileTreeCellRenderer
中设置图标。不可否认,这里的观点几乎与它原来的观点完全相反,但它仍然可以归结为同一件事——图标


本教程中介绍它的部分是。

它在文件结构中显示的
是什么意思?显示您希望数据在树中的显示方式。@DevilsHnd我希望现在提供的图片更容易理解我的问题。@andrewth文档已链接。如果你看这篇文章的第4段,就会看到Genealogy.java以及Oracle文档的链接。@AndrewThompson谢谢你指出这一点。我确实看到了关于定制的那一章,但在阅读时,我觉得它只是关于不同操作系统的外观和感觉,以及关于如何显示子文件夹线条的可能性(角度、水平、无)。这正是我跳过这一章的地方,因此我没有读到对我来说很重要的内容。它现在起作用了,所以如果你想提供一个答案,那么我可以把它标记为接受答案。