У меня есть JTable
с пользовательским редактором ячеек. В редакторе реализован FocusListener
, поэтому я могу проверить, является ли содержимое ячейки действительным, если пользователь уходит от ячейки.
Я хотел бы использовать JOptionPane
в focusLost
(в EventDispatchThread
), чтобы позволить пользователю выбрать, следует ли вернуться к старому значению или принять скорректированное значение.
Вот проблема; если пользователь редактирует ячейку, а затем нажимает кнопку вне таблицы, кнопки actionlisteners
получают уведомление до того, как JOptionPane
вернется.
Я бы хотел, чтобы это произошло:
- Пользователь редактирует ячейку
- Пользователь нажимает кнопку
- Ячейка обнаруживает потерю фокуса
- JOptionPane отображается и пользователь выбирает действие
- JOptionPane закрывается и значение ячейки устанавливается
- Кнопка actionListeners под названием
Вместо этого это происходит:
- Пользователь редактирует ячейку
- Пользователь нажимает кнопку
- Ячейка обнаруживает потерю фокуса
- Отображается JOptionPane, и пользователь выбирает действие
- Кнопка ActionListeners называется
- JOptionPane закрывается и значение ячейки устанавливается
Можно ли отложить события действия кнопки до закрытия JOptionPane
?
Из других потоков я читал, что JDialog
делает некоторую магию, чтобы гарантировать продолжение отправки событий, чтобы сам диалог мог обрабатывать события.