compListTblModel=new TableModelExAdapter(compColumnNames,compData,compLongValues,false);public TableModelExAdapter(String[] columnNames, Object[][] data, Object[] longValues, boolean isEditable)目前只能做到 isEditable是true,全部都是editable,false, 全部都是 non editable,那位达人指点一下,谢谢了!

解决方案 »

  1.   

    import javax.swing.table.*;
    import java.util.ArrayList;public class DispatchTableModel
        extends AbstractTableModel {    private ArrayList columnNames = new ArrayList();
        private ArrayList dataRows = new ArrayList();
        private ArrayList colEdit = new ArrayList();
        private String cellEditFlags;    public DispatchTableModel(ArrayList value, ArrayList headname,
                                  String cellEditFlag) {
            colEdit = headname;
            cellEditFlags = cellEditFlag;
            for (int loopHead = 0; loopHead < headname.size(); loopHead++) {
                columnNames.add(headname.get(loopHead));
            }
            for (int loopValue = 0; loopValue < value.size(); loopValue++) {
                ArrayList vRow = new ArrayList();
                vRow = (ArrayList) value.get(loopValue);
                dataRows.add(vRow);
            }
        }
        public int getColumnCount() {
            if (columnNames == null) {
                System.out.println("kong name");
            }
            return columnNames.size();
        }
        public int getRowCount() {
            if (dataRows == null) {
                System.out.println("kong data");
            }
            return dataRows.size();
        }
        public String getColumnName(int col) {
            return columnNames.get(col).toString();
        }
        public Object getValueAt(int row, int col) {
            return (Object) ( ( (ArrayList) dataRows.get(row)).get(col));
        }
        public Class getColumnClass(int col) {
            return getValueAt(0, col).getClass();
        }    public ArrayList getValues() {
            return this.dataRows;
        }
        public boolean isCellEditable(int row, int col) {
                    return true;
        }
        public void setValueAt(Object value, int row, int col) {
            ArrayList tmp = new ArrayList();
            tmp = (ArrayList) dataRows.get(row);
            tmp.set(col, value);
            fireTableCellUpdated(row, col);
        }
     
        public void addRow(ArrayList data) {
            int RowNums = dataRows.size();
            dataRows.add(data);
            fireTableRowsInserted(RowNums, RowNums);
        }
        public void insertRow(int row, ArrayList data) {
            dataRows.add(row, data);
            fireTableRowsInserted(row, row);    }
        public void deleteRow(int row) {
            int RowNums = dataRows.size();
            dataRows.remove(row);
            fireTableRowsDeleted(RowNums, RowNums);
        }
    }
    这个你参考一下。isCellEditable()方法控制是否可以编辑。
    在这里你可以控制哪一列可以编辑,哪一列不可以编辑。现在的是全部可以编辑