0

我创建了一个默认文本为“数据预览”的标签。

当我尝试将文本( 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);
4

1 回答 1

1

您需要调用layout()文本的父级。这是的javadoc Composite#layout()

如果接收者有布局,则要求布局对接收者的孩子进行布局(即设置大小和位置)。如果接收器没有布局,则什么也不做。

这解决了这个问题,原因如下:

每次父母必须布置时,都会确定每个孩子的大小。当您第一次添加标签时,父级将启动子级的大小计算。当您稍后更改文本时,这不会自动完成,因此您必须告诉父级重新布局。

于 2013-07-23T14:28:14.810 回答