【发布时间】:2017-09-16 18:56:50
【问题描述】:
我想要一个带有一些标签的组合,所有标签应该有相同的高度,但它们应该垂直居中。
到目前为止,我有以下内容:
public static void main(String[] args) {
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
final Composite composite = new Composite(shell, SWT.VERTICAL);
composite.setLayout(GridLayoutFactory.fillDefaults().numColumns(1).equalWidth(true).spacing(0, 0).create());
for (int i = 0; i < 10; i++) {
final Label label = new Label(composite, SWT.WRAP);
label.setAlignment(SWT.CENTER);
label.setText(i < 5 ? "small " + i : "a very big text for the row that is named " + i);
label.setToolTipText(label.getText());
label.setLayoutData(GridDataFactory.fillDefaults().align(SWT.CENTER, SWT.CENTER).grab(true, true).create());
}
shell.setSize(100, 600);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}
如您所见,标签在其行中垂直居中,但环绕的标签比其他标签占用更多空间。
如果我将hint(SWT.DEFAULT, 60) 添加到GridData,我可以强制标签具有相同的高度,但它们将不再垂直居中。
我可以将所有标签包装在复合材料中,在复合材料上设置高度提示并将标签居中,但让我们先看看还有另一个选项。
如何创建垂直居中的等高行?
【问题讨论】:
标签: java layout eclipse-plugin swt