我需要你帮助解决我的代码中的问题。该程序应与JTable进行比较并删除所有匹配的记录。进度监视器也应显示工作进度。我的问题在于进度条。它真的不能正常工作。我需要你帮助解决这个问题。以下是我的代码摘录:
//An inner class
class Task extends SwingWorker<Void, Void> {
@Override
public Void doInBackground() {
int progress = 0;
setProgress(0);
while (progress < table2.getRowCount() && !isCancelled()) {
//Make progress.
for( int i= 0;i < table2.getRowCount(); i++){
progress =i/10;
setProgress(progress);
for(int j= 0;j < table1.getRowCount();j++){
//check if reference nos match
if((table2.getValueAt(i,4).toString()).equals(getTrimedValueAt(j))){
matchedRefNo++;
//if ref matches, then check amount -compareValues(6,1)
if(compareValues(j,i)){
System.out.println("Value match");
matchedValueNo++;
deleteRow(i);
break;
}
}
}
}
}
return null;
}
@Override
public void done() {
Toolkit.getDefaultToolkit().beep();
btnStart.setEnabled(true);
progressMonitor.setProgress(0);
progressMonitor.close();
System.out.println("Refereces matced="+matchedRefNo+"\n Values matched "+matchedValueNo);
}
//and int action performed method
progressMonitor = new ProgressMonitor(MainForm.this,
"Scanning files.....",
"", 0, 100);
progressMonitor.setProgress(0);
task = new Task();
task.addPropertyChangeListener(this);
task.execute();
}
答案 0 :(得分:0)
我要看的第一个地方是if语句中的break;
。你不应该把它包括在内,而我的想法是让你脱离循环。
什么不能正常工作?你有错误信息吗?