java jframe 运行_java – 使用JProgressBar运行JFrame

你有一个经典的并发和Swing问题.您的问题是您在主Swing线程,EDT或事件调度线程上执行长时间运行的任务,这将锁定线程,直到该过程完成,从而阻止它执行其任务,包括与用户交互和绘制GUI图形.

解决方案是在后台线程中执行长时间运行的任务,例如SwingWorker对象给出的.然后,您可以通过SwingWorker的发布/进程对更新进度条(如果是决定因素).有关这方面的更多信息,请阅读Concurrency in Swing上的这篇文章.

例如.,

public void myMethod() {

final MyProgessBarFrame progFrame = new MyProgessBarFrame();

new SwingWorker() {

protected Void doInBackground() throws Exception {

// do some processing here while the progress bar is running

// .....

return null;

};

// this is called when the SwingWorker's doInBackground finishes

protected void done() {

progFrame.setVisible(false); // hide my progress bar JFrame

};

}.execute();

progFrame.setVisible(true);

}

此外,如果从另一个Swing组件显示它,那么您应该显示模态JDialog而不是JFrame.这就是我在SwingWorker代码之后在窗口上调用setVisible(true)的原因 – 这样如果它是一个模态对话框,它就不会阻止SwingWorker被执行.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值