这是我写的一个显示ResultSet数据的TableModel:
public class ResultSetModel extends AbstractTableModel
{
    private String[] colNames = new String[0];
    private ArrayList data = new ArrayList();
    private ArrayList listeners = new ArrayList();    public void setResultSet(ResultSet rs)
        throws SQLException
    {
        data.clear();        ResultSetMetaData rmd = rs.getMetaData();
        int colCount = rmd.getColumnCount();
        colNames = new String[colCount];
        for(int i=1; i<=colCount; i++)
            colNames[i-1] = rmd.getColumnName(i);
        while(rs.next())
        {
            String[] values = new String[colCount];
            for(int col=1; col<=colCount; col++)
                values[col-1] = rs.getString(col);
            data.add(values);
        }
        
        fireTableStructureChanged();
    }
    
    public Class getColumnClass(int c)
    {
        return String.class;
    }    public int getColumnCount()
    {
        return colNames.length;
    }    public String getColumnName(int index)
    {
        return colNames[index];
    }    public int getRowCount()
    {
        return data.size();
    }    public Object getValueAt(int row, int col)
    {
        String[] values = (String[]) data.get(row);
        return values[col];
    }    public boolean isCellEditable(int row, int col)
    {
        return false;
    }    public void clear()
    {
        data.clear();
        colNames = new String[0];
        fireTableStructureChanged();
    }
}example:ResultSetModel model = new ResultSetModel();
JTable table = new JTable(model);
...
ResultSet rs = ...
model.setResultSet(rs);
...