本帖最后由 woaini2000211 于 2011-06-08 00:24:49 编辑

解决方案 »

  1.   

    你是直接用数组初始化JTable的吧,即调用的是
    public JTable(final Object[][] rowData, final Object[] columnNames)
    构造函数。
    当使用这个构造函数,为JTable设定的是一个AbstractTableModel
    下面是其源代码,一看便知:public JTable(final Object[][] rowData, final Object[] columnNames) {
            this(new AbstractTableModel() {
                public String getColumnName(int column) { return columnNames[column].toString(); }
                public int getRowCount() { return rowData.length; }
                public int getColumnCount() { return columnNames.length; }
                public Object getValueAt(int row, int col) { return rowData[row][col]; }
                public boolean isCellEditable(int row, int column) { return true; }
                public void setValueAt(Object value, int row, int col) {
                    rowData[row][col] = value;
                    fireTableCellUpdated(row, col);
                }
            });
        }而DefaultTableModel是AbstractTableModel的子类,你将AbstractTableModel强制转化为DefaultTableModel,就引发了类型转化的异常
    解决方法,既然你想用DefaultTableModel,你就直接生成一个DefaultTableModel,然后调用
    public JTable(TableModel dm)生成JTable