我使用默认文本“数据预览”创建标签。
当我尝试将文本(dnyamic)更改为不同的文本时,它只显示“数据预览”大小的文本。
我如何控制标签的大小?
final Composite previewHeader = new Composite(this.previewPanel, SWT.NULL);
final GridLayout layout = new GridLayout();
layout.numColumns = 2;
layout.marginHeight = 0;
layout.marginWidth = 0;
previewHeader.setLayout(layout);
final GridData headerData = new GridData();
headerData.horizontalAlignment = GridData.FILL;
headerData.grabExcessHorizontalSpace = true;
previewHeader.setLayoutData(headerData);
this.previewLabel = new RichTextLabel(previewHeader, SWT.LEFT);
this.previewLabel.setText("<b>Data Preview:</b>"); //$NON-NLS-1$
final GridData labeldata = new GridData();
labeldata.grabExcessHorizontalSpace = true;
labeldata.verticalAlignment = GridData.VERTICAL_ALIGN_END;
labeldata.verticalSpan = 0;
labeldata.verticalIndent = 0;
this.previewLabel.setLayoutData(labeldata);
答案 0 :(得分:1)
您需要在文本的父级上调用layout()
。这是Composite#layout()
:
如果接收器有布局,则要求布局布局(即设置接收器的子节点的大小和位置)。如果接收器没有布局,则不执行任何操作。
由于以下原因,这解决了这个问题:
每个孩子的大小都是在父母必须布置时确定的。首次添加标签时,父级将启动子级的大小计算。当您稍后更改文本时,这不会自动完成,因此您必须告诉父级再次布局。