[英]JTable will set to editable after converting ResultSet to TableModel with DbUtils. How to make it non-editable again?
Here is My Code for doing this`这是我执行此操作的代码`
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);
}
}
In DbUtils.resultSetToTableModel
, replace在
DbUtils.resultSetToTableModel
,替换
return new DefaultTableModel(rows, columnNames);
and return a TableModel
that overrides isCellEditable()
:并返回一个覆盖
isCellEditable()
的TableModel
:
return new DefaultTableModel(rows, columnNames){
@Override
public boolean isCellEditable(int row, int column) {
return false;
}
};
Variable names should NOT start with an upper case character.变量名不应以大写字符开头。
SongData_Table
should be songDataTable
. SongData_Table
应该是songDataTable
。
Override the isCellEditable(...)
method of the JTable, instead of the TableModel.覆盖 JTable 的
isCellEditable(...)
方法,而不是 TableModel。
JTable songDataTable = new JTable()
{
@Override boolean isCellEditatable(int row, int column)
{
return false;
}
};
You could override the method isCellEditable:您可以覆盖方法 isCellEditable:
//instance table model
DefaultTableModel tableModel = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
};
table.setModel(tableModel);
or....或者....
table.setEnabled(false);
using Vector Convert ResultSet to TableModel instead:使用 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;
}
});
......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.