我有一个问题,我的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
你可以做这样的事情,不是最好的,但是它可以给你一些想法
创建一个线程调度程序类,并从主类中调用它
public class ThreadDispatcher implements Runnable { public ThreadDispatcher() { } public void run() { //call the method related heavy process here } }
在你的主要班级可能就是这样
Thread thread = new Thread(new ThreadDispatcher()); thread.start(); sleep(100);
赶上InterruptedException ex。
并检查Java线程示例。