我开发了一个简单的 Swing 应用程序,其中我正在使用 SwingWorker 运行一个进程,并在进程运行时向最终用户显示一个不确定的进度条。
一旦该过程完成,我将在 SwingWorker 的 done() 方法中设置 ProgressDialog 的可见性为 false。
现在的问题是,当最终用户单击父窗口时,它会变得聚焦,并且进度对话框将返回到主窗口,当我尝试将对话框的模态设置为 true 时,我不希望它只将我的程序放在那里,而我的SwingWorker 线程根本没有启动。
因为我是 Swing 的新手,所以让我知道如何同时实现这两件事。
我的 swingworker 应该停止,并且用户应该不能像我们为对话框设置模态 tru 时那样单击 main。
代码片段:
ProgressDialog myProgressDialog = new ProgressDialog();
myProgressDialog.setVisible(true);
myProgressDialog.setLocationRelativeTo(this);
mySwingWorkerForUpdate = new SwingWorker<String, String>() {
@Override
protected String doInBackground() throws Exception {
//my code here
}
@Override
protected void done() {
super.done();
mySwingWorkerForUpdate = null;
myProgressDialog,setVisibility(false);
}
};
mySwingWorkerForUpdate.execute();