我有一个JTable,我通过覆盖表的getCellEditor方法添加了DatePickerCellEditor来编辑日期。当我通过在文本框中键入来编辑此单元格时,一切正常并且数据已更改。不幸的是,当我按下按钮并从日历中选择日期时,日历会消失,但日期不会改变。
这是我的getCellEditor。它有什么问题,还是别的什么?我使用的是JDK 8.谢谢。
@Override
public TableCellEditor getCellEditor(int row, int column) {
TableCellEditor ret;
//column = convertColumnIndexToModel(column);
if ((column == 1 || column == 2) && getModel().getValueAt(row, column) != null) {
Class rowClass = getModel().getValueAt(row, column).getClass();
if (rowClass.equals(Integer.class)) {
return new SpinnerCellEditor();
} else if (rowClass.equals(Date.class)) {
return new DatePickerCellEditor();
} else {
return getDefaultEditor(rowClass);
}
} else {
return super.getCellEditor(row, column);
}
}
答案 0 :(得分:0)
问题似乎是表上的terminateEditOnFocusLost属性。似乎它迫使DatePickerCellEditor在从日历弹出窗口接收更新之前关闭编辑。
我刚刚从配置JTable的代码中评论了以下行,它开始正常工作。
listaFiltragem.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);