在 SWT 中垂直基线对齐的 RowLayout

4
SWT的RowLayout对于此目的来说很好,但我希望所有包含文本的小部件在字体基线上垂直对齐。
也许有一个现成的自定义布局可以做到这一点吗? Snippet204.java可能具备实现它所需的条件,但我想问一下是否以前已经完成了。找不到它,但似乎是一个典型的要求。
在截图的顶部是行布局,下面是一个固定布局,我手动排列到基线上(WindowBuilder可以进行捕捉)。

demo screenshot

1个回答

7

RowLayout有一个叫做center的字段。只需将其设置为true即可。

center指定行中的控件在水平布局中是否应该在每个单元格中垂直居中,或者在垂直布局中是否应该在每个单元格中水平居中。默认值为false

public static void main(String[] args)
{
    Display display = new Display();
    Shell shell = new Shell(display);

    RowLayout layout = new RowLayout();
    layout.center = true;

    shell.setLayout(layout);
    shell.setText("StackOverflow");

    new Label(shell, SWT.NONE).setText("Label");
    new Button(shell, SWT.PUSH).setText("Button");

    shell.pack();
    shell.open();

    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
        {
            display.sleep();
        }
    }

    display.dispose();
}

谢谢!虽然在Mac OS上不是完美的像素,但已经很接近了,所以我现在就这样留着。 - Phantrast
@Phantrast 很好!如果你能找到更好的解决方案,请在这里发布。如果没有,考虑接受我的答案。 - Baz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接