Мне нужна ваша помощь в решении проблемы в моем коде. Предполагается, что программа сравнивается с JTables и удаляет все соответствующие записи. Монитор прогресса также должен показывать ход работы. Моя проблема связана с индикатором выполнения. Это действительно не работает должным образом. Мне нужна ваша помощь в решении этого. Ниже приведен мой отрывок из моего кода:
//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();
}
Первое, на что я смотрю, - это break;
в выражении if. Вам не нужно включать это, и моя мысль заключается в том, что вы нарушаете петлю.
Что работает неправильно? У вас есть сообщения об ошибках?