私は実際には Java と SWT を初めて使用するので、私の質問はばかげているように聞こえるかもしれません。私はイントラネット(およびスタックオーバーフロー)を見てきましたが、すべての答えと例は私のような初心者には複雑すぎます.
私はクラスを持っています、それを管理者と呼びます。ボタンをクリックすると、別のクラス (ハンドラー) でメソッドが起動されます。
- Admin にはプログレス バーがあり、Handler の操作で増加するはずです。
- Handler での操作にどれくらいの時間がかかるかはわかりませんが、そのうちの 9 つがあることはわかっています。
- 各メソッドが終了したときに、どうにかして管理者に通知したいと思います。
私がこれまでに持っているもの:(関連しない部分は省略)
管理者.java:
ProgressBar bar = new ProgressBar(this, SWT.SMOOTH);
Button btn = new Button(this, SWT.NONE);
btn.setText("Update");
btn.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
btn.setEnabled(false);
thread.start();
}
});
Handler handler = new Handler();
final Thread thread = new Thread(){
public void run() {
handler.run();
for(int i=0; i<=10; i++) {
final int value = i;
try {
Thread.sleep(800);
} catch (Exception e) { }
display.asyncExec(new Runnable(){
public void run() {
bar.setSelection(value);
}
});
}
}
};
Handler.java:
public class Handler implements Runnable{
void m1() {...}
void m2() {...}
...
void m9() {...}
public void run()
{
m1();
m2();
...
m9();
}
この実装では、handler.run() の呼び出しは正常に機能し、プログレス バーはいっぱいになりますが、もちろんそれらは「相関」していません。
あなたの知恵に感謝します!どうもありがとうございました!