58,454
社区成员
发帖
与我相关
我的任务
分享
protected class MyTableModel extends AbstractTableModel {
private String[] columnNames;
private Object[][] rowData;
public MyTableModel(Object[][] rowData, String[] columnNames) {
this.rowData = rowData;
this.columnNames = columnNames;
}
@Override
public int getColumnCount() {
return columnNames.length;
}
@Override
public int getRowCount() {
return rowData.length;
}
@Override
public String getColumnName(int col) {
return columnNames[col];
}
@Override
public Class getColumnClass(int col) {
// 如果是boolean,则显示为JCheckBox
// 如果是Integer,则只能输入整数
return getValueAt(0, col).getClass();
}
@Override
public boolean isCellEditable(int row, int col) {
// 第一列不能编辑
return col == 0 ? false : true;
}
@Override
public Object getValueAt(int row, int col) {
return rowData[row][col];
}
@Override
public void setValueAt(Object value, int row, int col) {
// 双击时cell editor显示,然后输入值
// 当cell失去焦点或者按下回车键后,setValueAt方法被调用,更新cell renderer
System.out.println("setValuAt: Value: " + value + ", [" + row + ", " + col + "]");
rowData[row][col] = value;
fireTableCellUpdated(row, col);
}
}
setModel(new AbstractTableModel(){
public int getRowCount(){}
public int getColumnCount(){}
public Object getValueAt(int row, int column){}
});