代码:
public void actionPerformed(ActionEvent e){
Thread temp = new BcMasProcessThread(this.jpBar,this,BcMasReaderUrl.getFileCount(tfFile.getText()));
bcThread.start(); while(strTemp != null){
循环操作。。
if(){} ///往数据库插入数据如果加上这样的业务操作进度条就不能把中间的显示 了,看到的只是显示为100%的了,不知道为什么,是不是界面刷新问题??请各位指点~~~
}
insertCountTemp++;
this.setInsertCount(insertCountTemp); //把变化的数据传到线程中!
}
public class BcMasProcessThread extends Thread{
private int count;
private JProgressBar jBar;
BcMasImportData bcImport;
public BcMasProcessThread(JProgressBar jBar,BcMasImportData bcImport,int j)
{
this.jBar = jBar;
this.bcImport = bcImport;
this.count = j;
}
public void run()
{
int min = 0;
int max = 100;
int total = 0;
int values = 0;
int free = 0;
jBar.setMinimum(min);
jBar.setMaximum(max);
jBar.setValue(values);
while(true && !Thread.interrupted())
{
//setFree(countTemp);
total = count;
free = bcImport.getInsertCount();
values = free*100/total;
jBar.setValue(values);
jBar.setString(values+"%");
//setCountTemp(free);
if(free >= total)
{
this.stop();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
}}
public void actionPerformed(ActionEvent e){
Thread temp = new BcMasProcessThread(this.jpBar,this,BcMasReaderUrl.getFileCount(tfFile.getText()));
bcThread.start(); while(strTemp != null){
循环操作。。
if(){} ///往数据库插入数据如果加上这样的业务操作进度条就不能把中间的显示 了,看到的只是显示为100%的了,不知道为什么,是不是界面刷新问题??请各位指点~~~
}
insertCountTemp++;
this.setInsertCount(insertCountTemp); //把变化的数据传到线程中!
}
public class BcMasProcessThread extends Thread{
private int count;
private JProgressBar jBar;
BcMasImportData bcImport;
public BcMasProcessThread(JProgressBar jBar,BcMasImportData bcImport,int j)
{
this.jBar = jBar;
this.bcImport = bcImport;
this.count = j;
}
public void run()
{
int min = 0;
int max = 100;
int total = 0;
int values = 0;
int free = 0;
jBar.setMinimum(min);
jBar.setMaximum(max);
jBar.setValue(values);
while(true && !Thread.interrupted())
{
//setFree(countTemp);
total = count;
free = bcImport.getInsertCount();
values = free*100/total;
jBar.setValue(values);
jBar.setString(values+"%");
//setCountTemp(free);
if(free >= total)
{
this.stop();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
}
}}
你现在的问题是在BcMasProcessThread 里用了sleep(1000),如果整个操作就没有1秒呢?
就算是超过一秒的,更新也是不连贯的。