1

我正在开发一个程序,该程序每次通过时都会遍历对象列表。当一个对象的“时间”(即通过次数)到时,它会启动一个 JDialog 来请求它的下一个任务。问题是如何处理在一次通过中发出此请求的多个对象。

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

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

有没有办法可以弹出对话框,让用户可以使用其他窗口,并让其他对象等待轮到他们使用对话框?

4

2 回答 2

2

如评论中所述,可以通过更改parent的方式Window来解决问题。不利的一面是,“行为依赖于实现”。

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

于 2012-08-16T09:32:33.743 回答
0

通过将原始窗口的 ModalExclusionType 设置为“应用程序”并在完成后切换回“不排除”来解决此问题。

于 2012-09-26T14:58:55.903 回答