一个愚蠢的问题,但我真的无法得到它的工作:我在Swing应用程序中有一些长时间运行的过程,可能需要几分钟时间。我想在此过程正在进行时向用户显示进度对话框。我还想阻止用户执行进一步的操作,例如在进程正在进行时按下按钮。非阻塞模式Swing进度对话框
如果我这样做对EDT的过程中,这显然可以防止在过程是怎么回事任何事情的最终用户。但是由于美国东部时间正在忙于处理,所以它从不会显示对话框的内容,因此我只是获取对话框的轮廓。
但是,如果我在工作线程中执行该过程,则最终用户可以单击按钮并导致EDT操纵工作人员同时操作的状态,因此坏东西。如果我做的对话框模式,这不会发生,但在Swing 模式也意味着阻挡,所以此刻我叫setVisible(true)
,线程块,直到永远。
所以我现在的“解决方案”是使用工作者线程,然后产生一个单独的线程,其唯一目的是吸收setVisible
的阻塞性质。当然,必须有更好的解决方案!
那么,如何获取阻止用户与系统(模式)的其余部分交互但不阻塞,导致它是可见的线程的对话?
参见:http://stackoverflow.com/questions/3954120/swing-modal-dialog-refuses-to-close-sometimes – Zarkonnen 2012-10-20 07:39:16