Я обнаружил событие propertyChanged
в JDateChooser
, которое срабатывает при выборе даты. И jTable1.putClientProperty("terminateEditOnFocusLost", true);
заставляет таблицу завершить редактирование на focusLost
Редактировать: если всплывающее окно календаря не работает, если вы хотите изменить год, когда ячейка таблицы теряет фокус и завершает редактирование: (
jDateChooser.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals("date")) {
stopCellEditing();
}
}
});
Редактировать (решено): вместо использования jTable1.putClientProperty("terminateEditOnFocusLost", true);
добавление ta FocusListener
к JTable
в TableCellEditor
и отмена редактирования при потере фокуса дают возможность проверить, является ли всплывающее окно JDateChooser's
видимым или нет. Но перед этим JDateChooser
должен быть расширен с помощью всплывающего isVisible
метода. Потому что всплывающая переменная защищена. И компоненты редактора ячеек не должны быть фокусируемыми, иначе JTable
также теряет фокус