在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) {;}
}
其实也是对的!左右括号,及大括号不对齐是会死得很惨的!