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
方法是正确的使用方法。。