我是SWT中的总菜鸟,刚入门,但我以前使用过Swing这样的GUI框架。
我有一个包含Group和Button的Composite。该组最初设置为不可见(使用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");
以下是我如何从Button的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);
}
任何线索都会受到赞赏。
答案 0 :(得分:1)
显然,解决方案是使用Display.getCurrent().update();