繁体   English   中英

使用ArrayList中的数据加载JTable <HashMap>

[英]Load JTable with data from ArrayList<HashMap>

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

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不依赖于预定义的大小数据。

总而言之,我的问题是,如何将带有HashMaps的ArrayLists中的数据放入JTable中。

我已经尝试了一些选项,但它没有成功。

提前致谢。

您可以只创建自己的TableModel实现(或从其中一个可用类扩展),也可以使用其他数据结构(请参阅DefaultTableModel上的可用构造函数)。

但是,只要找到将列顺序确定为HashMap的机制,就可以使用此数据结构创建TableModel

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

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

  • getColumnCount
  • getRowCount
  • getValueAt
  • getColumnName

选择列的外观顺序(例如查询然后消息),然后使用

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)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM