0
我想建立一個垂直放置多個複合材料的GUI。我把我的方法放在一個最簡單的例子中:兒童複合材料沒有出現在佈局
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
,在那裏我將每個孩子的頂部附件設置爲前一個。兩者顯示完全相同的結果。
有誰知道我在做什麼錯?
非常感謝!只是爲了理解:'ScrolledComposite'只能有一個孩子,所以我將多個孩子包裹在一個額外的'Composite'中? – 2013-04-04 19:46:58
@André正確。 – Baz 2013-04-04 20:10:18