在Java Swing. 基礎篇的運用進度列這個部份,課本有一個範例:
for (int i = MY_MINIMUM; i <= MY_MAXIMUM; i++) {
final int ii=i;
SwingUtilities.invokeAndWait({
new Runnable() {
public void run()
it.updateBar(ii);
}
});
try{java.lang.Thread.sleep(100);}catch(Exception e){;}
}
}
}
發現這個迴圈讓我死得很慘,可是我看原文的範例:
for (int i = MY_MINIMUM; i <= MY_MAXIMUM; i++) {
final int percent=i;
try {
SwingUtilities.invokeAndWait({
new Runnable() {
public void run() {
it.updateBar(percent);
}
});
java.lang.Thread.sleep(100);
} catch (Exception e) {;}
}
也是錯!
到了第二版的時候:
for (int i = MY_MINIMUM; i <= MY_MAXIMUM; i++) { final int percent=i; try { SwingUtilities.invokeLater(new Runnable( ) { public void run( ) { it.updateBar(percent); } }); java.lang.Thread.sleep(100); } catch (InterruptedException e) {;} }
已經改成用invokeLater,結果也對了!
可是其實如果第一版的範例改成這樣:
for (int i = MY_MINIMUM; i <= MY_MAXIMUM; i++) {
final int percent=i;
try {
SwingUtilities.invokeAndWait(
new Runnable() {
public void run() {
it.updateBar(percent);
}
});
java.lang.Thread.sleep(100);
} catch (Exception e) {;}
}
其實也是對的!左右括號,及大括號不對齊是會死得很慘的!