pra*_*han 1 java swing multithreading jprogressbar event-dispatch-thread
我有一个JFrame进度条和我的代码,它应该在后台运行它显示进度条中的进度.
我在Progressbar类中实现了runnable并启动了线程.但进度条框架没有显示完整..并且它被卡住并且在我的代码完全执行后显示已满,即在主线程关闭后.
我知道这是一个基本错误.
public class ProgressScriptUI extends JFrame implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
setTitle("Progressing to Generate DDL Scripts");
setBounds(400, 250, 850, 400);
getContentPane().setLayout(null);
JProgressBar progressBar= new JProgressBar(0,100);
progressBar.setBounds(200, 100, 500, 20);
add(progressBar);
setVisible(true);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
//I am calling the below code in some other class
ProgressScriptUI progress = new ProgressScriptUI();
Thread uiThread = new Thread(progress);
uiThread.start();
oracleValidateOLDorNEW.execute(); //Code that I need to call in back ground
Run Code Online (Sandbox Code Playgroud)
必须在Event Dispatching Thread的上下文中执行所有UI代码.这使得在后台工作同时保持UI更新有点棘手.
查看Swing中的Concurrency以获取解决方案的建议和建议.
可能最简单的方法是使用SwingWorker具有publish/ processdata的功能,以便将其同步回EDT以及进度回调
你可以看看
作为一些例子....
| 归档时间: |
|
| 查看次数: |
403 次 |
| 最近记录: |