网上有很多关于怎样实现JTable不能被编辑的文章,因为如果不设置的话,双击单元格就会将单元格的内容读入一个默认的编辑器里,很多时候我们并不希望这样的事情发生,所以必须do something来阻止它。呵呵,好吧,我承认大家都知道下面这种方法可以实现让整个表格不不允许被编辑
DefaultTableModel newTableModel = new DefaultTableModel(dataVector,columnModelVector){
@Override
public boolean isCellEditable(int row,int column){
return false;
}
};
没什么神秘的,就是重写DefaultTableModel的方法isCellEditable方法,但更多的情况下,我们是需要指定表格中某一列或若干列允许被编辑,如商品列表中的数量,价格等等,这样又如何去实现呢?
其实仔细观察一下,这个isCellEditable方法会传两个参数进来,明眼人一看就知道,这分别是单元格的行和列索引,所以,根据这个row和column来控制返回true或false,我们的愿望就能实现了。下面是几个例子,要学会举一反三噢:
1、只允许表格的第三列被编辑
public boolean isCellEditable(int row,int column){
if(column == 3){
return true;
}else{
return false;
}
}
2、只允许表格的第二行、第二列的单元格被编辑
public boolean isCellEditable(int row,int column){
if(row == 2 && column == 2){
return true;
}else{
return false;
}
}
3、只允许表格的第4行和第6被编辑
public boolean isCellEditable(int row,int column){
if(row == 4 || row == 6){
return true;
}else{
return false;
}
}