因此,有一个框架(主应用程序)。从这里,我打开Modal JDialog并启动后台线程工作,同时在表中显示进度(日志条目)。此过程很关键,不应停止/隐藏/关闭,因此为什么在所有操作完成之前都禁用对话框的关闭按钮。但是,用户可以随时点击ESC键并调用我的onCanceled(),从而调用this.dispose()。

编辑:
我继承了这个项目,并监督了继承的兔子洞有多深,因此已经监督了ESC的处理,接着是e.consume(),这就是为什么我的解决方案无法正常工作的原因!

最佳答案

但是,用户可以随时点击ESC键,并且我的onCanceled()被调用


这听起来像自定义代码添加到了APP,因为大多数LAF默认情况下不实现Escape键。因此,我将删除自定义代码。

但是,如果您的LAF使用此默认行为,则拦截Escape键的正确方法是使用Key Bindings。本教程显示了如何覆盖/删除绑定。

10-05 17:39