Java GUI编程,从mysql中获取的数据需要放到JTable中!如何控制JTable各行各列能被选择,但是单元格中的内容不被修改?
昨天晚上仔细研究了一下,发现针对此问题,网上有很多回答有不当之处,估计大多是copy来copy去,自己并没有进行测试!
JTable类下有一个子类:DefaultTableModel。
DefaultTableModel类有一个方法:
isCellEditable,该方法可使JTable能被选但不能被编辑。具体示例如下:
static DefaultTableModel tableModel;
static JTable jTable;
tableModel = new DefaultTableModel();
jTable=new JTable(tableModel){
public boolean isCellEditable(int row, int column)
{
return false;}//表格不允许被编辑
}
};
这个代码是使整个JTable不可编辑。如果控制row和column的值,可以控制任何一个单元格可编辑或不可编辑。
网上很多回答的主要有两种错误:
例如:tableModel = new DefaultTableModel(){public boolean isCellEditable(int row, int column) {return false;}};
其实这是错误的,虽然我刚开始也是这么认为的。
这样使用isCellEditable没有作用,必须在定义JTable类时使用,例如正文中的正确代码!
为什么会这样?难道JTable本身也有isCellEditable方法吗?
请哪位朋友告诉我?谢谢啊!
1、建议直接使用JTable的方法 setEnabled(false), 例如:jTable.setEnabled(false),但是这种方法只是使jTable失效,即让jTable只能看,不能做其他任何操作。
2、在定义DefaultTableModel类时使用isCellEditable方法。