【问题标题】:Java SWT: Label width not changing after changing it's textJava SWT:更改文本后标签宽度没有变化
【发布时间】:2018-09-23 18:28:15
【问题描述】:

我在 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();
    }
});

【问题讨论】:

  • 我无法复制这个问题,你能提供一个minimal reproducible example 吗?如果一切设置正确,那么lblNumbersValue.requestLayout(); 就足够了。
  • 成功了! @LorisSecuro 请将其作为 asnwer 发布,我会接受。 requestLayout 解决了问题

标签: java eclipse label swt windowbuilder


【解决方案1】:

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

它应该可以解决这些问题。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多