代码之家  ›  专栏  ›  技术社区  ›  NullPointerException

javaswt:更改文本后标签宽度不变

  •  1
  • NullPointerException  · 技术社区  · 6 年前

    我在Stack Overflow中读到了很多关于这个问题的内容,并应用了所有建议的解决方案(getShell pack、layout、getparent layout等等),但都不起作用。

    我有一个带有文本值的标签。我也有一个按钮,当点击这个按钮,我改变了一个较长的文本标签的内容。问题是标签的宽度没有改变,只有新的较长文本的一部分可见。

    我的文本代码:

    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();
        }
    });
    
    1 回复  |  直到 5 年前
        1
  •  1
  •   Loris Securo    6 年前

    自SWT4.6以来,触发布局更新的最可靠方法是 Control.requestLayout() .

    它应该解决这些问题。

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