我正在尝试构建一个图形用户界面,其中多个复合材料垂直布局。我把我的方法放在一个最小的例子中:
public class LayoutTest {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setSize(400, 300);
shell.setLayout(new FillLayout());
Composite listPanel = new ScrolledComposite(shell, SWT.BORDER
| SWT.V_SCROLL);
listPanel.setLayout(new RowLayout(SWT.VERTICAL));
listPanel.setBackground(Display.getCurrent().getSystemColor(
SWT.COLOR_WHITE));
for (int i = 1; i < 5; i++) {
Composite listElement = new Composite(listPanel, SWT.BORDER);
listElement.setLayout(new RowLayout());
Label label = new Label(listElement, SWT.BORDER);
label.setText(String.valueOf(i) + " foo");
label.setSize(label.computeSize(SWT.DEFAULT, SWT.DEFAULT));
listElement.setSize(label.computeSize(shell.getSize().x,
label.getSize().y));
}
shell.layout(true, true);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
您可以看到一些合成是在循环中创建的。问题是只有第一个出现在 UI 中。我希望它们被布置在彼此下方,因为它的父级有一个垂直的RowLayout
.
我还尝试了其他方法。一列是一列GridLayout
,另一列是FormLayout
我将每个孩子的顶部附件设置为前一个的地方。两者都显示出完全相同的结果。
有谁知道我做错了什么?