java - 显示对象的图形

标签 java swing jtree

我想显示对象中的所有字段以及该字段的所有字段等。所以基本上是对象的“图形”或层次结构。

JTree 就足够了,但是为了在 Java Swing 中显示对象的图形,还有其他人可能推荐的吗?

为了澄清,我想以编程方式执行此操作,并且我想使用任何 java 对象执行此操作。

这个问题与以下内容几乎相同:

How to display tree hierarchy in Java?

最佳答案

您正在寻找的是将对象图序列化为可以在 JTree 中显示的数据结构。这是一项非常复杂的任务,涉及大量工作。要正确执行此操作,您需要执行以下操作(这只是一个摘要):

  • 确定您将使用的数据结构(可能是 TreeNode 的实现或等效的东西)来表示对象和字段

  • 使用反射递归地探索对象图。对于每个类,探索包括完整继承链中的字段;然后,如果每个字段不是原始类型,则对其类执行相同的操作;还要确保对每个非公共(public)字段调用 setAccessible(true) 以实际访问它

  • 处理对象引用循环,您不希望永远循环并以 StackOverflowError 或无限树结束。您需要找到一种方法将对对象的引用链接到 JTree 中的实际内容。这是我发现 IdentityHashMap 有用且理想的案例之一。

我的建议是不要从头开始。您可以从各种来源中找到灵感,例如:java.io.ObjectOutputStream 及其附带类的来源,或其他开源序列化框架,例如 XStreamKryo或其他一些。

我个人不久前已经出于特定目的实现了这样一个框架,这就是为什么我知道它可能会带来的难以忍受的痛苦。您可以找到来源here (从 JPPFObjectOutputStream 类开始)。

关于java - 显示对象的图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18994678/

相关文章:

java - 当代码从 R2007a 移动到 R2013a 时出现 NoClassDefFoundError

java - Eclipse Java Formatter - 右括号前的换行符

java - 为什么对抽象类而不是接口(interface)进行编程是错误的?

java - 为什么我的 jbutton 不再添加自己?

java - JPanel 的滚动 Pane ?

java - 如何将路径存储到 JTree 中的节点?

java - postgresql中如何表示小数字?

java - GUI 中显示的 vector 图形

java - 检测 JTree 行上的双击

java - 如何在TreeCellRenderer中设置工具提示?