0

我试图让 JTable 从存储在 ArrayList 中的数据中加载 HashMaps。代码看起来像

private ArrayList<HashMap> menuLijst;
private JPanel tablePanel;
//some init
tablePanel = new JPanel();

然后,这是一些随机数据,只是为了确保它有效。

this.menuList = new ArrayList();
// hashmap
HashMap hm1 = new HashMap();
HashMap hm2 = new HashMap();
hm1.put("question", "Contact");
hm1.put("query", "select contact from tim");
hm1.put("message", "contact");
hm2.put("question", "Sales");
hm2.put("query", "select sales from tim");
hm2.put("message", "sales");
menuList.add(hm1);
menuList.add(hm2);    

所以这就是我的 HashMap 的样子,这有点多余,因为 JTabel 不依赖于预定义的大小数据。

总之,我的问题是,如何将 ArrayLists 中的数据与 HashMaps 放在 JTable 中。

我尝试了一些选项,但没有达到应有的效果。

提前致谢。

4

3 回答 3

1

要么您只是创建自己的TableModel实现(或从一个可用类扩展),要么您必须使用另一种数据结构(请参阅可用的构造函数DefaultTableModel)。

但是TableModel,只要您找到一种机制来确定列顺序为HashMap无顺序,就可以直接使用此数据结构创建您的。

Swing table 教程包含有关创建TableModel实例的部分

于 2012-05-14T08:32:07.433 回答
1

只需扩展AbstractTableModel并实现以下方法:

  • 获取列数
  • 获取行数
  • 获取值
  • 获取列名

选择列的出现顺序(例如查询然后消息),并使用

HashMap map = menuLijst.get(row);
if (col==0)
     return map.get("query");
else if (col==1)
     return map.get("message");

实施 getValueAt(int row, int col)

于 2012-05-14T08:36:23.173 回答
0

jtable 使用 javabeans 的概念,hashmap 键/值对没有实现为 javabeans 属性。我会使用对类或使用键/值属性定义您自己的对类

于 2012-05-14T08:31:00.367 回答