【初心者】Java質問・相談スレッド94【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0218デフォルトの名無しさん
2006/11/26(日) 07:09:33jがローカル変数なのでfinalでないとうまくいかない。
jをインスタンス変数にしてやればアクセスできるようになる。
private int j;
public void test() {
j = 0;
for (int i = 0; i <= 10000000; i++) {
j++;
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() { jProgressBar.setValue(j); }
});
}
}
でも真面目にがんばるから思った通り遅いね、こりゃ。
内部クラスだからうまくいかないというより
匿名クラスだから外側の変数の受け渡しがうまく書けない。
内部クラスでもこんな感じで
public void test() {
int j = 0;
class Hoge implements Runnable {
int k;
void setValue(int k) { this.k = k; }
public void run() { jProgressBar.setValue(k); }
}
Hoge hoge = new Hoge();
for (int i = 0; i <= 10000000; i++) {
j++;
hoge.setValue(j);
javax.swing.SwingUtilities.invokeLater(hoge);
}
}
■ このスレッドは過去ログ倉庫に格納されています