Java 调整标签大小以适应内容
这是一个场景: 我正在创建一个小部件,它将显示一个文本,后跟一个进度条。 为此,请创建一个Java 调整标签大小以适应内容,java,swt,Java,Swt,这是一个场景: 我正在创建一个小部件,它将显示一个文本,后跟一个进度条。 为此,请创建一个组合 container=newcomposite(父级,SWT.BORDER); 容器.setLayoutData(layoutData); setLayout(新的GridLayout(1,true)); 为此,我添加了一个标签 messageText=新标签(容器,SWT.WRAP | SWT.BORDER | SWT.CENTER); setLayoutData(新的GridData(SWT.FI
组合
container=newcomposite(父级,SWT.BORDER);
容器.setLayoutData(layoutData);
setLayout(新的GridLayout(1,true));
为此,我添加了一个标签
messageText=新标签(容器,SWT.WRAP | SWT.BORDER | SWT.CENTER);
setLayoutData(新的GridData(SWT.FILL、SWT.TOP、true、false));
后面是一个组合,其中包含进度条:
final Composite progressContainer=新组合(容器,SWT.BORDER);
进度容器
.setLayoutData(新网格数据(SWT.FILL,SWT.FILL,true,true));
结果是:
我所期望的是标签的增长能够包含全文。我一直在努力遵循的指示,但是,我一定是错过了一些东西,因为我无法实现所需的行为
感谢您的输入。您指定的
网格数据使用所有可用的水平空间,但垂直空间仅使用为控件计算的初始大小
要使用所有可用的垂直空间,请使用:
messageText.setLayoutData(新的GridData(SWT.FILL,SWT.FILL,true,true));
请注意,您还指定了progressContainer
也应该占用所有可用空间-这可能不是您想要的,因此您可能还需要更改它。可能:
progressContainer.setLayoutData(新网格数据(SWT.FILL、SWT.CENTER、false、false));
如果要在更改需要调用的文本时调整消息文本的大小
container.layout(true);
设置新文本后,强制重新计算尺寸。使用原始的GridData
值。这些更改确实为标签提供了所有可能的空间,但是这会将进度条向下移动到底部。我希望标签占用它所需的空间,但不能超过这个范围。这样,进度条始终位于文本的正下方。可能作为旁注,progressContaienr不需要填充空间,我只需要它位于文本的正下方,然后在设置新文本后调用layout
——请参阅更新的答案。