Java 将ResultSet转换为带有DbUtils的TableModel后,JTable将设置为可编辑。如何使其再次不可编辑?

Java 将ResultSet转换为带有DbUtils的TableModel后,JTable将设置为可编辑。如何使其再次不可编辑?,java,swing,jtable,tablemodel,Java,Swing,Jtable,Tablemodel,这是我做这件事的代码 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] +

这是我做这件事的代码

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);
    }
}

您可以重写方法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);

您可以重写方法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);
在中,替换

并返回覆盖
isCellEditable()的
TableModel

在中,替换

并返回覆盖
isCellEditable()的
TableModel


变量名不应以大写字符开头
SongData_表
应为
songDataTable

重写JTable的
isCellEditable(…)
方法,而不是TableModel

JTable songDataTable = new JTable()
{
    @Override boolean isCellEditatable(int row, int column)
    {
        return false;
    }
};

变量名不应以大写字符开头
SongData_表
应为
songDataTable

重写JTable的
isCellEditable(…)
方法,而不是TableModel

JTable songDataTable = new JTable()
{
    @Override boolean isCellEditatable(int row, int column)
    {
        return false;
    }
};

改用Vector Convert ResultSet to TableModel:

.......    
Vector column = new Vector();
column.addElement("Columnname1");
column.addElement("Columnname2");
column.addElement("Columnname3");
........
//data Vector
Vector data = new Vector();
while (rs.next()) {
Vector temp = new Vector();
temp.addElement(rs.getString(1));
temp.addElement(rs.getString(2));
 temp.addElement(rs.getString(3));
  ........      
data.addElement(temp);
}
//append to JTable
yourtable.setModel(new javax.swing.table.DefaultTableModel(data,column){

@Override
public boolean isCellEditable(int row, int column) {
   return false;
}
});
......

改用Vector Convert ResultSet to TableModel:

.......    
Vector column = new Vector();
column.addElement("Columnname1");
column.addElement("Columnname2");
column.addElement("Columnname3");
........
//data Vector
Vector data = new Vector();
while (rs.next()) {
Vector temp = new Vector();
temp.addElement(rs.getString(1));
temp.addElement(rs.getString(2));
 temp.addElement(rs.getString(3));
  ........      
data.addElement(temp);
}
//append to JTable
yourtable.setModel(new javax.swing.table.DefaultTableModel(data,column){

@Override
public boolean isCellEditable(int row, int column) {
   return false;
}
});
......

DefaultTableModel不适用于DbUtils,我不能使用table.setEnabled(false),因为在此之后我不能在表上使用click事件。不要使用
setEnabled
,这将禁用所有交互,包括行选择…这不是一个好主意…@AnandChokshi然后不要使用
DbUtils
,因为
isCellEditable
方法是正确使用的方法..DefaultTableModel不适用于DbUtils,我不能使用table.setEnabled(false),因为在此之后我不能在表上使用click事件。不要使用
setEnabled
,这将禁用所有交互,包括行选择…不是一个好主意…@AnandChokshi然后不要使用
DbUtils
,因为
isCellEditable
方法是正确的使用方法。。