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

时间:2019-07-19 07:22:31

标签: java swing jtree treenode treemodel

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

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

当然,另一种可能性是使用一个简单的JList,但是我在Stackoverflow上读到,使用JList来显示分层的东西使用JTree会更容易。

当我决定尝试实现JTree时,我还在Oracle的Genealogy.java中找到了Oracle提供的documentation of JTree文件。从本文档的第一个示例中可以看到,总是显示一个文件结构,因此也显示了一种文件结构表示形式(使用文件夹和文件符号)。与此对照,Genealogy.java仅显示人员的姓名,因此我尝试将Genealogy.java的实现改编为我的情况,但是我完全不知道如何执行此操作,因为我什至不知道这些符号在哪里我可能会从那里禁用它们,也实际上并没有真正了解需要实现的某些方法。

由于我目前对如何完成工作真的一无所知,因此我确实需要一些详细的帮助(仅告诉我提出自己的JTree或TreeNode实现在这一点上并没有真正帮助我)。有没有更简单的方法,或者不可避免地需要实现前面提到的任何接口,如果可以,那么将如何实现?


编辑:

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

JTree displaying folders and file symbols

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

JTree only displaying strings

1 个答案:

答案 0 :(得分:1)

几乎肯定可以通过用于树节点的TreeCellRenderer(的图标)找到答案。有关提示,请参见File Browser GUI。它显示了如何在FileTreeCellRenderer中设置图标。诚然,这里的要点与当时的情况几乎完全相反,但是仍然归结为同一件事-图标。

本教程涵盖的部分是How to Use Trees: Customizing a Tree's Display