【发布时间】:2010-12-13 03:39:19
【问题描述】:
我有一个未装饰的模态 JDialog,当用户在模态对话框之外单击时,我想将其设置为 setVisible(false)。
这在 Swing 中可行吗?
我正在做的是为文本字段(如日期选择器)弹出一个自定义编辑器。有没有更简单的方法来做我想做的事?
编辑
请记住,调用 setVisible(true) 时模态会阻塞,因此您不能只说“不要使用模态对话框”
我已经尝试在对话框上聚焦监听器,但它们不会在其模态时触发。
【问题讨论】:
-
您是否尝试过 addAWTEventListener 方法,这应该为您提供所有指定事件类型的事件,例如在我下面给出的示例中,这将是所有鼠标事件。
-
我知道你说“所以你不能只说“不要使用模式对话框””,大概是因为你有在 setVisible 调用之后直接执行的代码?当对话框关闭时,你能不能把它移到一个监听器中?在不了解应用程序细节的情况下,它可能会提供更简洁的设计,尤其是在单元测试方面,我喜欢将对话框移到获取用户响应的策略中,这样我就可以注入模拟策略而无需在运行时挂起单元测试无头或无需以编程方式创建事件。
标签: java swing modal-dialog jdialog