显示对象的图形

时间:2013-09-25 01:17:35

标签: java swing jtree

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

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

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

这个问题几乎与:

相同

How to display tree hierarchy in Java?

1 个答案:

答案 0 :(得分:1)

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

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

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

  • 处理对象引用循环,您不希望永远循环,最终得到StackOverflowError,也没有inifnite树。您需要找到一种方法将对象的引用链接到JTree中的实际内容。这是我发现IdentityHashMap有用且可取的情况之一。

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

我个人已经在不久前为特定目的实施了这样一个框架,这就是为什么我知道它可能会产生的痛苦。您可以找到来源here(以JPPFObjectOutputStream类开头)。