晚上好。 我创建了SWT应用程序,它包含两个元素的shell:ExpandBar和Button。 在应用程序启动时,ExpandBar的所有项目都会展开,Button会在ExpandBar下。我想要执行以下操作:在此操作之后,通过Button的单击和重绘复合来折叠所有ExpandBar的项目。
我希望,重绘后的按钮发生在折叠的ExpandBar下面,但是Button认为是另一种方式并且不会改变它的位置。另一个有趣的事情是,在第二次单击Button之后,所有元素行为都变得正确。
我的源代码如下所示:
final ExpandBar bar = new ExpandBar (shell, SWT.NONE);
bar.setLayoutData(new RowData());
Button redraw = new Button(shell,SWT.PUSH);
redraw.setText("redraw");
redraw.setLayoutData(new RowData());
redraw.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
shell.layout(true,true);
Display.getCurrent().update();
for (ExpandItem item: bar.getItems())
{
item.setExpanded(false);
}
bar.redraw();
bar.update();
bar.layout(true,true);
shell.layout(true,true);
Display.getCurrent().update();
}
});
第一次点击后如何重新绘制复合材料?