Для проверки наличия изменений перед сохранением данных из JTable использую .isEditing(), проблема в том, что если пользователь после ввода нажмет enter или щелкнет на любую другую ячейку (так, что ячейка станет выбранной, но без курсора в ней) то isEditing вернет false и соответственно ничего не сохраниться. Выходом из ситуации мне видится либо написание собственного велосипеда для проверки наличия изменений, либо надо сделать JTable всегда редактируемым, то есть сделать так, что бы ячейку нельзя было подсветить без установки курсора в ней. Вот что накопал на эту тему:
// Нажатие Enter вызывает редактирование ячейки
jTable1.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "key-enter");
jTable1.getActionMap().put("key-enter", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
int row = jTable1.getSelectedRow();
int col = jTable1.getSelectedColumn();
if (jTable1.isCellEditable(row, col)) {
jTable1.editCellAt(row, col);
}
}
});
// Одинарный клик по ячейке вызывает ее редактирование
((DefaultCellEditor) jTable1.getDefaultEditor(String.class)).setClickCountToStart(1);