0
我已經按照這個問題的一些計算器的迴應,我發現每一個答案都貢獻了一點點來解決這個問題,但我仍然堅持。更新JTable單元格與日期類型
我還是不能更新日期類型的表單元格,我點擊細胞並對其進行編輯,但是當我按下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);
}
好抓;更多[這裏](http://stackoverflow.com/a/7539298/230513)。 – trashgod
以DD/MM/YYYY格式輸入日期非常有用,謝謝!但我有一個小問題,表中的日期以這種格式顯示:(例如:「29/Jan/1980」)當我嘗試編輯它顯示的單元格爲YYYY-MM-DD如何在這兩個視圖(DD/MM/YYYY)中保持格式一致? – user2382836
@ user2382836您可以創建自定義編輯器。在上述教程中查看編輯器和渲染器的概念。 – tenorsax