刷新JLabel百分比Java

刷新JLabel百分比Java,java,swing,jlabel,percentage,event-dispatch-thread,Java,Swing,Jlabel,Percentage,Event Dispatch Thread,我有一个显示百分比的下载程序,但后来我添加了一个JLabel,它不会刷新。所以它保持在0%。现在我的问题是,如何每秒更新JLabel loaderText = "Loading is at "+TextDownloader.percentage+"%.."; JLabel loaderLabel = new JLabel(loaderText, JLabel.CENTER); loaderLabel.setForeground(Color.WHITE); aJPanel.add(loaderLa

我有一个显示百分比的下载程序,但后来我添加了一个JLabel,它不会刷新。所以它保持在0%。现在我的问题是,如何每秒更新JLabel

loaderText = "Loading is at "+TextDownloader.percentage+"%..";
JLabel loaderLabel = new JLabel(loaderText, JLabel.CENTER);
loaderLabel.setForeground(Color.WHITE);
aJPanel.add(loaderLabel);

使用
java.swing.Timer
类每秒刷新图形组件:

final JLabel loaderLabel = new JLabel(JLabel.CENTER);
loaderLabel.setForeground(Color.WHITE);
aJPanel.add(loaderLabel);

java.swing.Timer timer = new Timer(1000, new ActionListener(){
    String loaderText = "Loading is at "+TextDownloader.percentage+"%..";
    loaderLabel.setText(loaderText);
};);
timer.start();

不要阻止EDT(事件调度线程)-发生这种情况时,GUI将“冻结”。而是为长时间运行的任务实施
SwingWorker
。请参阅详细信息。也可以考虑使用一个代替“代码> jLabor <代码>或一个代替的代码。所示的代码似乎也连续添加了一个标签,但我假设这只是从问题的代码提取中得到的。<代码>文本下载器< /Code >很可能阻塞了EDT,所以在结束之前,这些代码都不会进行视觉更改。“最有可能”?你能给我一个到源代码的链接吗?我从来没见过那个代码。“到源代码的链接。””从上面的评论重复给伯特。有关更多详细信息,请参阅。我知道Swing中的并发性。我说的是
TextDownloader
来源。我的代码不执行任何硬的业务逻辑,所以它也应该工作得很好。请注意,OP的一份报告将是解决问题的方法。