如何创建进程监视器?

时间:2015-03-25 18:09:18

标签: java

我需要你帮助解决我的代码中的问题。该程序应与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();
    }

1 个答案:

答案 0 :(得分:0)

我要看的第一个地方是if语句中的break;。你不应该把它包括在内,而我的想法是让你脱离循环。

什么不能正常工作?你有错误信息吗?