java 改变标签值_java-如何更改进度条和标签的值?

您正在阻止事件分发线程,这将阻止它更新UI.您可以使用线程,但是Swing是单线程API,这意味着仅应从事件调度线程的上下文中对UI进行更新.

您可以使用SwingWorker,它将允许您在后台线程中执行长时间运行的过程,但是它支持安全地将更新同步到UI.

例如,借助其进度和PropertyChange支持,它变得易于管理.

public class Worker extends SwingWorker {

@Override

protected Object doInBackground() throws Exception {

// The download code would go here...

for (int index = 0; index < 1000; index++) {

int progress = Math.round(((float)index / 1000f) * 100f);

setProgress(progress);

Thread.sleep(10);

}

// You could return the down load file if you wanted...

return null;

}

}

“进度窗格”

public class ProgressPane extends JPanel {

private JProgressBar progressBar;

public ProgressPane() {

setLayout(new GridBagLayout());

progressBar = new JProgressBar();

add(progressBar);

}

public void doWork() {

Worker worker = new Worker();

worker.addPropertyChangeListener(new PropertyChangeListener() {

@Override

public void propertyChange(PropertyChangeEvent evt) {

if ("progress".equals(evt.getPropertyName())) {

progressBar.setValue((Integer) evt.getNewValue());

}

}

});

worker.execute();

}

}

您可以使用EDT的发布/处理支持以及对EDT的更新,PropertyChange支持或worker的done方法,以在EDT内部安全完成工作时获取其结果.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值