Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调整标签大小以适应内容_Java_Swt - Fatal编程技术网

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
——请参阅更新的答案。