Jtable利用SetModel进行数据绑定
首页定义了一个公用Model类,代码如下:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package TableModel;
import java.sql.ResultSet;
import java.util.LinkedList;
import javax.swing.table.AbstractTableModel;
import zhinengkaiguanjiankong.comm.LoggerUtil;
/**
*数据库和JTable数据绑定记录数据存放对象
* @author http://www.my400800.cn
*/
public class TableModel extends AbstractTableModel {
private int column = 4;
private String[] columnName = null;
private LinkedList<String[]> resultSet = null;
public TableModel() {
}
/** Creates a new instance of TableModel */
public TableModel(ResultSet rs, String[] DScolumnName, String[] columnName) throws Exception {
if (DScolumnName.length != columnName.length) {
throw new Exception("指定JTable列和指定数据库列数不一致,无法进行数据绑定");
}
this.columnName = columnName;
column = columnName.length;
resultSet = new LinkedList<String[]>();
try {
while (rs.next()) {
String[] row = new String[column];
for (int i = 0; i < column; i++) {
row[i] = rs.getString(DScolumnName[i]);
}
resultSet.add(row);
}
} catch (Exception e) {
LoggerUtil.WriteErrLog(e);
throw e;
// System.out.println("err");
}
}
/**
* 取得总记录数
* @return 总记录数
*/
public int getRowCount() {
return resultSet.size();
}
/**
* 取得总列数
* @return 总列数
*/
public int getColumnCount() {
return column;
}
/**
* 取得指定行指定列数据
* @param rowIndex 行
* @param columnIndex 列
* @return
*/
public Object getValueAt(int rowIndex, int columnIndex) {
String[] row = resultSet.get(rowIndex);
return row[columnIndex];
}
/**
* 取得指定列名称
* @param i 指定列
* @return 指定列名称返回
*/
public String getColumnName(int i) {
return columnName[i];
}
}
model实现类,在这个列里面设定JTable列明和数据库的取得字段名
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package TableModel;
import java.sql.ResultSet;
/**
*
* @author 173.114
*/
public class ZhinengkaiguanjiankongViewTableModel extends TableModel {
public ZhinengkaiguanjiankongViewTableModel(ResultSet rs) throws Exception {
/**
* 记录rs 数据库字段名 JTable列明
*/
super(rs, new String[]{"id", "i64val", "timeval", "val14", "val22", "adv", "val24", "val13"},
new String[]{"ID", "名称", "时间", "状态", "段位", "属性", "备注", "开关ID"});
}
}
数据绑定代码
tableModel = new ZhinengkaiguanjiankongViewTableModel(数据库取得的ResultSet );
jtbl_DataList.setModel(tableModel);
通过上面的代码,就把数据通过Model绑定到JTable了