希望JDialog是“模态”但不阻止其他窗口

时间:2012-08-15 22:53:49

标签: java swing user-interface jdialog modality

我正在研究一个程序,它遍历每个传递的对象列表。当一个对象的“时间”(即通过次数)达到时,它会调出一个JDialog来请求它的下一个任务。问题是如何处理多个对象一次传递这个请求。

如果我制作JDialog模态,每个对象依次发出请求,这就是我想要的;但主程序窗口不可用,我不想要。

如果JDialog不是模态的,则会出现多个实例,每个传递一个,我不想要;或者,如果我将其设置为单例,则只显示一个实例,但只有列表中的最后一个对象才能使用它。

有没有办法可以弹出对话框,让其他窗口可供用户使用,让其他对象轮流使用对话框?

2 个答案:

答案 0 :(得分:2)

如评论中所述,可以通过更改父Window的{​​{3}}来解决此问题。在缺点方面,“行为依赖于实现。”

作为替代方案,可以考虑遍历SwingWorker的后台线程中的对象,并将新的候选项添加到合适的组件,例如JListJTableJTabbedPane。从组件中选择一个元素会弹出一个传统的模态对话框,在完成时删除该元素。显示了一个相关示例modality。每个建议的组件都可以用表示其状态的图标进行标记。

答案 1 :(得分:0)

通过将原始窗口的ModalExclusionType设置为“application”并在完成后切换回“no exclude”来解决此问题。

相关问题