从ArrayList构建java JTable<T>
我要写一个方法,比如说public static JTable getJTableFromArrayList(ArrayList list)
,它可以很容易地从ArrayList构建一个JTable来比较各种数据此ArrayList应包含任何类型的对象
我现在能想到的是使用Gson
使用
Gson.toJsonTree(Object src)
方法将ArrayList<T> src
解析为JsonElement
从
JsonElement
构建JsonObject[]
使用
JsonObject.entrySet()
获取Set<Map.Entry<String,JsonElement>>
然后从自定义的
AbstractTableModel
构建JTable
,而行、列和标题则从Set
获取
在开始之前,我想知道是否有一种更简单、更直接的方法来实现这一点,而不是使用Gson?而且,如果其他人已经做到了这一点,我会很高兴使用现成的工具
# 1 楼答案
我不知道GSON是什么,但我认为你不需要转换数据
可以使用使用ArrayList保存自定义对象的TableModel
这个Row Table Model为你做了大部分工作。您只需要实现几个方法(而不是创建一个完整的TableModel)来识别您希望从自定义对象中看到的数据列。
JButtonTableModel.java
源代码是一个完整的示例,展示了如何实现这一点然后,也许你可以使用Bean Table Model为你做所有的工作,并使用反射来创建TableModel
# 2 楼答案
只需将
ArrayList<T>
调整为TableModel
,而不是将列表转换为GsonA
TableModel
需要按可预测的顺序访问它的元素,因为它可以通过行索引访问它们。因此,必须找到一种方法,将行索引映射到集合的元素。但是如果你只是将ArrayList
调整为TableModel
,这也不会有什么问题看起来您正在寻找一个
TableCellRenderer
,因为您说过希望以Gson创建元素树的方式显示任意对象。所以我会这样实施:# 3 楼答案
如图所示here,让
TableModel
包含Map
并使用keySet()
索引getValueAt()
实现中的行