如何在SWT中为文本添加大小

时间:2013-07-23 13:02:45

标签: java swt

我使用默认文本“数据预览”创建标签。

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

1 个答案:

答案 0 :(得分:1)

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

的javadoc
  

如果接收器有布局,则要求布局布局(即设置接收器的子节点的大小和位置)。如果接收器没有布局,则不执行任何操作。

由于以下原因,这解决了这个问题:

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