【问题标题】:How to make JTree to only display strings and not a file structure如何使 JTree 仅显示字符串而不显示文件结构
【发布时间】:2019-07-19 07:22:31
【问题描述】:

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

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

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

当我决定尝试实现 JTree 时,我还在他们的 documentation of JTree 中找到了 Oracle 提供的 Genealogy.java 文件。正如在本文档的第一个示例中所见,始终显示一个文件结构,因此还显示了一种文件结构类型的表示(使用文件夹和文件符号)。与此相反,Genealogy.java 仅显示人员的姓名,因此我尝试将 Genealogy.java 中的实现调整到我的情况,但是我完全不知道如何执行此操作,因为我什至不知道这些符号来自哪里我可以从哪里禁用它们,也没有真正得到我需要实现的某些方法的作用。

由于我目前真的不知道如何实现这一点,我真的需要一些详细的帮助(在这一点上,只告诉我自己实现 JTree 或 TreeNode 并没有真正帮助我)。有没有更简单的方法,或者是否需要实现前面提到的任何接口,如果有,该怎么做?


编辑:

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

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

【问题讨论】:

  • it shows in a file structure 是什么意思?显示您希望数据在树中的显示方式。
  • @DevilsHnd 我希望通过现在提供的图片更容易理解我的问题。
  • @AndrewThompson 文档已链接。如果您查看帖子的第 4 段,则有一个指向 Genealogy.java 以及 Oracle 文档的链接。
  • @AndrewThompson 感谢您指出这一点。我确实看到了关于自定义的那一章,但是在阅读时,我觉得它只是关于不同操作系统的外观和感觉以及如何显示子文件夹行(有角度、水平、无)的可能性。那正是我跳过这一章的部分,因此我没有阅读对我来说很重要的内容。它现在有效,所以如果你想提供它作为答案,我可以将其标记为已接受的答案。

标签: java swing jtree treenode treemodel


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-10-13
    • 2013-02-15
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 2016-08-16
    相关资源
    最近更新 更多