gpt4 book ai didi

java - Swing GUI 在数据处理期间不会更新

转载 作者:行者123 更新时间:2023-12-02 03:05:23 25 4
gpt4 key购买 nike

我遇到一个问题,当程序繁忙时,我的 Swing GUI 组件没有为我更新。我正在创建一个图像编辑器,在进行大量处理的同时,我尝试更改“状态”标签,同时让用户了解正在发生的情况。不过,直到处理完成后标签才会更新。

如何立即更新标签而不必等待?顺便说一句,我的标签都在 JPanel 上。

直到 for 循环和以下方法完成之后才设置我的标签。

 labelStatus.setText("Converting RGB data to base 36...");

for (int i = 0; i < imageColors.length; i++) {
for (int j = 0; j < imageColors[0].length; j++) {
//writer.append(Integer.toString(Math.abs(imageColors[i][j]), 36));
b36Colors[i][j] = (Integer.toString(Math.abs(imageColors[i][j]), 36));
}
}
String[][] compressedColors = buildDictionary(b36Colors);//CORRECTLY COUNTS COLORS

最佳答案

I'm having a problem where my Swing GUI components aren't updating for me while the program is busy.

这是因为您正在事件调度线程 (EDT) 上执行一个长时间运行的任务,并且 GUI 无法在任务执行完成之前重新绘制自身。

您需要在单独的线程或 SwingWorker 中执行长时间运行的任务(以获得更好的解决方案)。阅读 Swing 教程中关于 Concurrency 的部分有关 EDT 的更多信息以及使用 SwingWorker 来防止此问题的示例。

关于java - Swing GUI 在数据处理期间不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57025901/

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