刚遇到这个问题的时候,我就想是否有类似setCellEiditable的方法,但是翻遍api竟然找不到,后来在网上查了一些资料,终于知道原来要通过“改写”方法来实现。
方法如下:
首先自己写一个类并继承DefaultTableModel 或者AbstractTableModel 然后直接改写这两个类里面的public boolean isCellEditable(int rowIndex, int columnIndex) 方法。这样自己所写的那个类所实例化出来的JTable单元格就能设置为不允许编辑的状态。
例子
class TableModelOfCellDiseditable extends DefaultTableModel{
public TableModelOfCellDiseditable() {
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
/*
if (columnIndex == 0) { // 序列号不能修改
return false;
}
if(rowIndex < 5){ // 前5行不能修改
return false;
}
return true;
}
*/
return false;//所有单元格不允许编辑
}
}
然后根据需要实例化对象
DefaultTableModel test=new TableModelOfCellDiseditable();
然后用setDataVector(Vector,Vector)方法来为表模型添加数据。