首页 > 解决方案 > Java SWT:更改文本后标签宽度没有变化

问题描述

我在 Stack Overflow 中阅读了很多关于这个问题的内容,并应用了所有建议的解决方案(getShell 包、布局、getparent 布局等......),但没有一个有效。

我有一个带有文本值的标签。我还有一个按钮,当单击该按钮时,我正在用更长的文本更改标签的内容。问题是标签的宽度没有改变,只有一部分新的较长文本是可见的。

我的文字代码:

Composite composite_2 = new Composite(this, SWT.NONE);
composite_2.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, true, 1, 1));
composite_2.setLayout(new GridLayout(2, false));

Label lblNumbers = new Label(composite_2, SWT.NONE);
lblNumbers.setText("Números:");

Label lblNumbersValue = new Label(composite_2, SWT.NONE);   
lblNumbersValue.setText("...");

. . .

btnElegirNmeros.addSelectionListener(new SelectionAdapter() {
    @Override
    public void widgetSelected(SelectionEvent e) {
        lblNumbersValue.setText("asddadadasdasdasd");
        lblNumbersValue.getParent().layout();
        lblNumbersValue.pack();
        getShell().pack();
        getShell().layout();
    }
});

标签: javaeclipselabelswtwindowbuilder

解决方案


从 SWT 4.6 开始,触发布局更新最可靠的方法是Control.requestLayout().

它应该解决这类问题。

所以在你的情况下尝试lblNumbersValue.requestLayout();


推荐阅读