我有以下代码:
public class FileLoader extends SwingWorker(Void, Void) {
@Override
private Void doInBackground() {
loadFiles();
}
}
public class LogInPage {
private FileLoader fileLoader = new FileLoader();
public LogInPage() {
fileLoader.execute();
}
loginButtonActionPerformed(ActionEvent evt) {
//wait for files to finish loading
//while displaying a waiting cursor
showMainForm();
}
}
我的问题是:
单击按钮后,我希望在显示主窗体之前首先加载所有文件(同时显示沙漏光标和进度条)。
我之前使用Thread的join()完成了这项工作,但是无法对SwingWorker进行相同的操作。
我已阅读有关覆盖done()和实现侦听器的内容,但我不能在此处应用它。
任何帮助?
感谢。
答案 0 :(得分:0)
根据您所说的和您的想法相反,我认为您实际上可以使用SwingWorker的done()方法。在执行()之前,禁用按钮,启动繁忙的动画,然后在done()方法中,做你需要做的任何事情来继续程序。这就是它的用途: - )
您还应该查看SwingWorker.publish()和process()以发送和接收进度条事件。
另请参阅:How do I wait for a SwingWorker's doInBackground() method?