需要在AbstractTableModel中覆盖isCellEditable方法,并确保在getValueAt方法中返回的Object为可编辑数据类型。以下为示例代码:
public class MyTableModel extends AbstractTableModel {
private String[] columnNames;
private Object[][] data;
public MyTableModel(String[] columnNames, Object[][] data) {
this.columnNames = columnNames;
this.data = data;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
@Override
public int getRowCount() {
return data.length;
}
@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return data[rowIndex][columnIndex];
}
@Override
public void setValueAt(Object value, int rowIndex, int columnIndex) {
data[rowIndex][columnIndex] = value;
fireTableCellUpdated(rowIndex, columnIndex);
}
@Override
public Class getColumnClass(int columnIndex) {
return getValueAt(0, columnIndex).getClass();
}
@Override
public String getColumnName(int column) {
return columnNames[column];
}
}
在上述示例中,覆盖了isCellEditable方法并将其返回值设为true,以确保单元格可编辑。同时,在getValueAt方法中返回了可编辑数据类型的Object对象,在setValueAt方法中将修改后的值更新到数据数组中并调用fireTableCellUpdated方法通知表格视图更新。