询问如何为我的迭代提供jProgressBar

时间:2015-06-02 13:52:36

标签: swing jprogressbar

我想问一下如何在我的代码中提供jProgressBar。我使用netbeans接口。 progressBar将在达到maximum_iteration后结束。 jProgressBar已经在其他类中了。我该怎么办呢?谢谢。请帮忙。

train()被放在其他班级。

public void train(){
    for(int iteration=0; iteration<this.max_iteration; iteration++){
        //int percent = (iteration/this.max_iteration) * 100;
        //cs.jProgressBar1.setValue(percent);
        for(int index=0; index<this.hms; index++){
            Node[] newChord = {};
            double random = Math.random();
            /*process HS*/
            if(this.original_chord != null){
                // ensure the fist note of the new chord is not altered
                newChord[0].notes = new int[first_chord_notes.length];
                for(int j=0; j<first_chord_notes.length; j++){
                    newChord[0].notes[j] = first_chord_notes[j];
                }
            }
            // evaluate new chord and substitute the worst one in hs if new chord is better
            double newFitness = this.nodeListFitness(this.original_chord, newChord);
            int worstIndex = this.worst_index();
            double worstFitness = this.fitness[worstIndex];
            if(newFitness > worstFitness){
                this.hm[worstIndex] = newChord;
                this.fitness[worstIndex] = newFitness;
            }
        }
        System.out.println("Harmony Memory " + (iteration+1));
        this.debug();
        System.out.println("");
        //JProgressBar jProgressBar1 = new JProgressBar();
        //cs.jProgressBar1.setValue(iteration);
        //cs.jProgressBar1.setEnabled(true);


    }
}

1 个答案:

答案 0 :(得分:0)

我不确定100%但是只能在EventDispatcherThread内部更新Swing组件,这是运行GUI的线程。因此,在GUI中调用方法train()可能会更好,因此它会遇到EDT。另外,我无法理解你为什么要调用JProgessBar的构造函数,如果你说它已经在其他类中了,可能其他类(我想象它是GUI)已经创建了一个新的进度条实例