调整标签大小以适合内容

问题描述 投票:0回答:1

这就是场景:我正在创建一个小部件,它将显示一个文本,后跟一个进度条。因为这是创建一个Composite

container = new Composite(parent, SWT.BORDER);
container.setLayoutData(layoutData);
container.setLayout(new GridLayout(1, true));

为此,我添加了一个Label

messageText = new Label(container, SWT.WRAP | SWT.BORDER | SWT.CENTER);
messageText.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));

然后是一个包含进度条的复合:

  final Composite progressContainer = new Composite(container, SWT.BORDER);
progressContainer
    .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

这是结果:

enter image description here

我期望的是标签的增长是为了能够包含全文。我一直在努力遵循this post的指示,但我必须遗漏一些东西,因为我无法达到预期的行为。

感谢您的投入。

java swt
1个回答
1
投票

您指定的GridData使用所有可用的水平空间,但垂直空间仅使用为控件计算的初始大小。

要使用所有可用的垂直空间:

messageText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

请注意,您还指定progressContainer也应该占用所有可用空间 - 这可能不是您想要的,因此您可能还需要更改它。可能是:

progressContainer.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false));

如果您希望在更改需要调用的文本时调整消息文本的大小

container.layout(true);

设置新文本后强制重新计算大小。使用您原来的GridData值。

© www.soinside.com 2019 - 2024. All rights reserved.