我有JTable
一个自定义单元格编辑器。编辑器实现FocusListener
,因此如果用户单击远离单元格,我可以检查单元格的内容是否有效。
我想使用JOptionPane
inside focusLost
(in the EventDispatchThread
)来允许用户选择是恢复到旧值还是接受调整后的值。
这就是问题所在;如果用户正在编辑一个单元格,然后单击远离表格的按钮,则该按钮在返回之前actionlisteners
会收到警报。 JOptionPane
这就是我想要发生的事情:
- 用户编辑单元格
- 用户点击按钮
- 单元格检测到焦点丢失
- 显示 JOptionPane 并且用户选择操作
- JOptionPane 关闭并设置单元格的值
- Button 的 actionListeners 被调用
相反,这种情况正在发生:
- 用户编辑单元格
- 用户点击按钮
- 单元格检测到焦点丢失
- 显示 JOptionPane 并且用户选择操作
- Button 的 actionListeners 被调用
- JOptionPane 关闭并设置单元格的值
是否可以将按钮的操作事件推迟到JOptionPane
关闭之后?
从其他线程中,我读到它JDialog
确实可以确保事件调度继续进行,因此 Dialog 本身可以处理事件。