使用DbUtils将ResultSet转换为TableModel后,JTable将设置为可编辑。 如何让它再次不可编辑?
这是我执行此操作的代码
public static void addSong(String[] fileDetail, JTable SongData_Table) { try { con = DBConnection.getCon(); stmt = con.createStatement(); stmt.executeUpdate("insert into songs values (null,'" + fileDetail[0] + "', '" + fileDetail[1] + "',null,null)"); ResultSet rs = stmt.executeQuery("select * from songs"); TableModel model = DbUtils.resultSetToTableModel(rs); SongData_Table.setModel(model); if (con != null) { stmt.close(); con.close(); } } catch (SQLException e) { System.out.println("Error in Stmt " + e); } }
变量名称不应以大写字符开头。 SongData_Table
应该是songDataTable
。
覆盖JTable的isCellEditable(...)
方法,而不是TableModel。
JTable songDataTable = new JTable() { @Override boolean isCellEditatable(int row, int column) { return false; } };
在DbUtils.resultSetToTableModel
,替换
return new DefaultTableModel(rows, columnNames);
并返回一个覆盖isCellEditable()
的TableModel
:
return new DefaultTableModel(rows, columnNames){ @Override public boolean isCellEditable(int row, int column) { return false; } };
您可以覆盖方法isCellEditable:
//instance table model DefaultTableModel tableModel = new DefaultTableModel() { @Override public boolean isCellEditable(int row, int column) { //all cells false return false; } }; table.setModel(tableModel);
要么….
table.setEnabled(false);