Я полный новичок в SWT, только начинаю, но ранее я работал с графическими средами, такими как Swing.
У меня есть композит, который содержит группу и кнопку. Группа изначально настроена на невидимость (используя 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);
}
Любая подсказка будет оценена.