【Swing系列】JTable 与 AbstractTableModel
2017-01-25 13:13
323 查看
摘要: 通过List<Map> 转变为二位数组 在AbstractTableModel封装,提供给JTable使用
================================================================
import java.util.List; import java.util.Map; import java.util.Set; import javax.swing.table.AbstractTableModel; /** *构造函数 */ public class TableValues extends AbstractTableModel{ private static final long serialVersionUID = 1L; public String[] columnNames; public Object[][] values ; public TableValues(String[] columnNames,List<Map<String,Object>> vs){ this.columnNames=columnNames; values=listToArr(vs,columnNames.length); } public int getColumnCount() { return values[0].length; } public int getRowCount() { return values.length; } public Object getValueAt(int rowIndex, int columnIndex) { return values[rowIndex][columnIndex]; } /** * 获取列名 */ public String getColumnName(int column){ return columnNames[column]; } /** * list<map> 转变成二位数组 * [@param](https://my.oschina.net/u/2303379) list * [@param](https://my.oschina.net/u/2303379) titleLength * [@return](https://my.oschina.net/u/556800) */ private static <T> Object[][] listToArr(List<Map<String,Object>> list,int titleLength){ Object[][] data=new Object[list.size()][titleLength]; for(int i=0;i<list.size();i++){ Map<String,Object> map = list.get(i); Set<Map.Entry<String,Object>> set=map.entrySet(); int index=titleLength-1; for(Map.Entry<String,Object> entry:set){ if(index <titleLength){ data[i][index]=entry.getValue(); } index=index-1; } } return data; } }
================================================================
import java.awt.BorderLayout; import java.awt.Container; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; public class SimpleTableTest extends JFrame{ private static final long serialVersionUID = -4172876583187222326L; protected JTable table; public SimpleTableTest(){ Container pane = getContentPane(); pane.setLayout(new BorderLayout()); List<Map<String,Object>> list=new ArrayList<Map<String,Object>>(); Map<String,Object> map=new HashMap<String,Object>(); map.put("name", "何素华"); map.put("sex", "女"); map.put("age", "27"); Map<String,Object> map2=new HashMap<String,Object>(); map2.put("name", "徐良俊"); map2.put("sex", "男"); map2.put("age", "28"); list.add(map); list.add(map2); TableValues tv = new TableValues(new String[]{"姓名","性别","年龄"},list); table= new JTable(tv); // table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //设置行高 table.setRowHeight(30); //必须把table放入JScrollPane才会有列名出现 JScrollPane jsp = new JScrollPane(table); pane.add(jsp,BorderLayout.CENTER); } public static void main(String[] args) { SimpleTableTest stt = new SimpleTableTest(); stt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); stt.setSize(400,200); stt.setVisible(true); } }
相关文章推荐
- Java Swing JTable 表格【5:表格模型AbstractTableModel】
- JTable,TableModel,DefaultTableModel与AbstractTableModel的小结
- JTable适配(AbstractTableModel)
- <java><JTable>使用AbstractTableModel & JTable实现号码的分布图(初稿)
- 14. 59. 2. 用抽象表创建一个简单table Creating simple JTable using AbstractTableModel
- 用 TableModel Free 框架简化 Swing 开发——JTable
- <java><JTable>使用AbstractTableModel实现更新、删除、插入数据
- Java Swing JTable 表格【6:表格模型DefaultTableModel】
- JAVA Swing.JTable.DefaultTableModel
- 使用AbstractTableModel構造JTable的一個例子
- TableModel.JTable和AbstractTableModel
- Java Swing JTable 表格【4:表格模型TableModel】
- swing JTable学习(五)—中给table中的cell加tips 以及用AbstractTableModel创建表格
- swing JTable学习(三):AbstractTableModel
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查
- TableModel 与 AbstractTableModel
- JAVA源码学习笔记2---AbstractTableModel
- 使用TableColumnModel和AbstractTableModel的一個例子
- AbstractTableModel(示例,出错代码)
- JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(三):两个Viewmodel搞定增删改查