如何让Jtable不可编辑?

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的值,可以控制任何一个单元格可编辑或不可编辑。   

     网上很多回答的主要有两种错误:
1、建议直接使用JTable的方法 setEnabled(false), 例如:jTable.setEnabled(false),但是这种方法只是使jTable失效,即让jTable只能看,不能做其他任何操作。
2、在定义DefaultTableModel类时使用isCellEditable方法。
     例如:tableModel = new DefaultTableModel(){public boolean isCellEditable(int row, int column) {return false;}};
     其实这是错误的,虽然我刚开始也是这么认为的。
     这样使用isCellEditable没有作用,必须在定义JTable类时使用,例如正文中的正确代码!
     为什么会这样?难道JTable本身也有isCellEditable方法吗?

你可能感兴趣的:(如何让Jtable不可编辑?)