Jtable利用SetModel进展数据绑定

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了