別のスレッドからJProgressBar.setValue(int)を更新するにはどうすればよいですか?私の第2の目標は、可能な限り少ないクラスでそれを行うことです。
これが私が今持っているコードです:
// Part of the main class....
pp.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
new Thread(new Task(sd.getValue())).start();
}
});
public class Task implements Runnable {
int val;
public Task(int value){
this.val = value;
}
@Override
public void run() {
for (int i = 0; i <= value; i++){ // Progressively increment variable i
pbar.setValue(i); // Set value
pbar.repaint(); // Refresh graphics
try{Thread.sleep(50);} // Sleep 50 milliseconds
catch (InterruptedException err){}
}
}
}
ppはJButtonであり、JButtonがクリックされると新しいスレッドを開始します。
pbarは、MainクラスのJProgressBarオブジェクトです。
どうすればその値を更新できますか?(進捗状況)
上記のrun()のコードは、pbarを認識できません。