私は SWT のまったくの初心者で、まだ始めたばかりですが、以前は Swing などの GUI フレームワークを扱っていました。
グループとボタンを含むコンポジットがあります。Group は最初は非表示に設定され (group.setVisible(false) を使用)、ボタンをクリックすると表示に設定されます。これにより、いくつかの計算を実行するスレッドが開始され、進行状況でグループ内のラベルが更新されます (一種の手動の進行状況バー。これは顧客が望んでいるものです:))。
とにかく、何らかの理由で、スレッドの実行が終了した後にのみグループが表示され、何を使用してもグループを表示できないようです (this.pack()、this.layout()、パス内のさまざまなコントロールで this.getShell().layout(), redraw() - なし)。
グループを作成する方法は次のとおりです。
statusGroup = new Group(this, SWT.SHADOW_NONE);
statusGroup.setLayout(null);
statusGroup.setVisible(false);
percentCompleteLabel = new Label(statusGroup, SWT.NONE);
percentCompleteLabel.setText("0% complete");
ボタンの SelectionListener から更新する方法は次のとおりです。
this.statusGroup.setVisible(true);
this.statusGroup.pack(true);
this.statusGroup.layout();
this.getShell().layout();
myThreadStartupCode(); // psuedo
while (!workIsDone) // psuedo
{
final int progress = myProgressCalcMethod(); // psuedo
percentCompleteLabel.setText(progress + "% complete");
percentCompleteLabel.pack(true);
this.layout();
this.redraw();
Thread.sleep(100);
}
手がかりをいただければ幸いです。