gpt4 book ai didi

java - 如何使用 SwingWorker 避免 GUI 卡住

转载 作者:行者123 更新时间:2023-12-01 12:29:47 26 4
gpt4 key购买 nike

我正在编写一个在特定文件夹中创建一些 Excel 文件 (.xlsx) 的程序,但我遇到了 GUI 问题,因为当我调用创建此文件的方法时它会卡住。

我希望在 GUI 中存在一个不确定的进度条,除非出现异常,并且有一个 JLabel 来显示正在创建的 excel 文件,否则不会停止。

MailPanel 类:它是接口(interface),当我单击名为“Generate”的按钮时,会调用类GenerateExcel() 的“generateExcel”方法

public class MainPanel extends JPanel {
.....
.....
btnGenerate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {

jsonFileIssues = ..... ;
jsonFileProject = ..... ;
Project project = ..... ;
key = project.getKey();
category = project.getCategory();

String ruta = "C:\\JIRA\\JIRA-Proyectos\\" + category + "\\";

.....
GenerateExcelExterno gee = new GenerateExcelExterno(jsonFileProject, jsonFileIssues, key, ruta, excelFile);
gee.execute();
.....
}
}
.....
.....
}
<小时/>

GenerateExcel 类:这是生成文件的重要方法

我知道我必须将 SwingWorker 添加到GenerateExcel 类中才能解冻 GUI,但我无法获取它!

该方法创建文档,因此 doInBackground 可以工作,但面板中的进度条继续卡住...

public class GenerateExcel extends SwingWorker<Integer, Void> {

String jsonFileProject, jsonFileIssues, key, ruta, excelFile;

public GenerateExcel(String jsonFileProject, String jsonFileIssues,
String key, String ruta, String excelFile) {
super();
this.jsonFileProject = jsonFileProject;
this.jsonFileIssues = jsonFileIssues;
this.key = key;
this.ruta = ruta;
this.excelFile = excelFile;
}

public static void generateExcel(String jsonFileProject, String jsonFileIssues, String key, String ruta, String excelFile) {
.....
.....
.....
}

@Override
protected Integer doInBackground() throws Exception {
// TODO Auto-generated method stub
generateExcelExterno(jsonFileProject, jsonFileIssues, key, ruta, excelFile);
return 100; //for example
}
}

最佳答案

我认为我们详细回答的能力受到所提供的有限信息的限制,但您问题的要点很简单,您需要在控制类中设置 SwingWorker - ActionListener,然后执行它。 SwingWorker 的 doInBackground() 方法内部应该进行长时间运行的代码调用。不要从 doInBackground 中进行任何 Swing 调用。

一些有用的链接:

关于java - 如何使用 SwingWorker 避免 GUI 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26026274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com