【发布时间】:2013-12-09 17:04:13
【问题描述】:
我已经关注了一些stackoverflow对这个问题的回应,我发现的每个答案都有助于解决这个问题,但是我仍然卡住了。
我仍然无法使用日期类型更新表格单元格,我单击单元格并对其进行编辑,但是当我按 Enter 时它不会更新,它甚至不会让我离开单元格它只会显示一个它周围的红色边框。我将不胜感激,谢谢。
getColumnClass 方法:
@Override
public Class getColumnClass(int column) throws IllegalStateException {
String columnName;
if (!connectedToDatabase) {
throw new IllegalStateException("Not Connected to Database");
}
columnName = getColumnName(column);
if(columnName.equals("id")) {
return java.lang.Integer.class;
}
switch (table) {
case 0:
if (columnName.equals("dn") || columnName.equals("ade")) {
return java.util.Date.class;
} else {
return java.lang.String.class;
}
default:
try {
String className = metaData.getColumnClassName(column + 1);
return Class.forName(className);
} catch (SQLException | ClassNotFoundException ex) {
return Object.class;
}
}
}
getValueAt 方法:
@Override
public Object getValueAt(int row, int column) throws IllegalStateException {
if (!connectedToDatabase) {
throw new IllegalStateException("Not Connected to Database");
}
try {
resultSet.absolute(row + 1);
return resultSet.getObject(column + 1);
} catch (SQLException ex) {
return "";
}
}
setValueAt 方法:
@Override
public void setValueAt(Object value, int rowIndex, int columnIndex) {
String columnName = getColumnName(columnIndex);
java.sql.Date sqlDate;
switch (table) {
case 0:
if (columnName.equals("dn") || columnName.equals("de")) {
sqlDate = new java.sql.Date(((java.util.Date) value).getTime());
try {
resultSet.absolute(rowIndex + 1);
resultSet.updateDate(columnIndex + 1, sqlDate);
resultSet.updateRow();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
} else {
try {
resultSet.absolute(rowIndex + 1);
resultSet.updateString(columnIndex + 1, (String) value);
resultSet.updateRow();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
}
}
this.fireTableCellUpdated(rowIndex, columnIndex);
}
【问题讨论】:
标签: java sql swing jdbc jtable