你可以实现AbstractTableModel这个接口,然后修改数据源,然后通知table刷新就行了。
例如
Vector tableHead,ldata;
AbstractTableModel dataModel =new AbstractTableModel()
    {
      public int getRowCount()
      {
        return ldata.size();
      }
      public int getColumnCount()
      {
        return tableHead.size();
      }
      public Object getValueAt(int row, int column)
      {
        return ((Vector)(ldata.get(row))).get(column);
      }
      public String getColumnName(int column)
      {
        return (String)tableHead.get(column);
      }    };
jTable1= new JTable(dataModel);

解决方案 »

  1.   

    这种方法好象是可以,但数据源是从数据库里取得,如果这样实现会增加对数据库的操作。怎么样实现类似于DefaultTableModel的removeColumn()方法?谢谢。
      

  2.   

    所谓的数据源,其实就是你查询数据库返回的结果集,这样怎么会增加对数据库的操作,不明白的说。至于removecolumn也可以用model来实现。getColumnCount时减少列数,getValueAt的时候不返回指定的几列数据就行了。
      

  3.   

    分数也真是太少了点……,不过我还是可以告诉你:public class FolderTable extends AbstractTableModel {    //Folder folder;
        //Message[] messages;
        String[][] rowValues;    String[] columnNames = {"asfasdf","asfasfd","asfasfas"};
        Class[] columnTypes = { String.class, String.class, String.class };    public void setRowValues(String[][] rows) {
            this.rowValues = rows;
            fireTableDataChanged();
        }    public String[][] getRowValues() {
            return rowValues;
        }    //---------------------
        // Implementation of the TableModel methods
        //---------------------    public String getColumnName(int column) {
        return columnNames[column];
        }    public Class getColumnClass(int column) {
        return columnTypes[column];
        }
        public int getColumnCount() {
            return columnNames.length;
        }    public int getRowCount() {
            if (this.rowValues != null)
                return rowValues.length;
            return 0;
        }    public Object getValueAt(int aRow, int aColumn) {
            //return "";
            if (this.rowValues != null)
                return rowValues[aRow][aColumn];
            return "";    }
    }每次你删除一行后,重新调用一下setRowValues(String[][] 删除行后的新数据集),(FolderTable是放在一个JScrollPane上),JScrollPane再调用一下inValidate(),validate(),就可以自动刷新FolderTable了。