Java SWT: ширина метки не меняется после изменения ее текста - PullRequest
0 голосов
/ 23 сентября 2018

Прежде всего, это не дубликат.Я много читал об этой проблеме здесь в stackoverflow и применил все предложенные решения (пакет 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();
    }
});

1 Ответ

0 голосов
/ 23 сентября 2018

Начиная с SWT 4.6, самый надежный способ вызвать обновление макета - Control.requestLayout().

. Это должно решить подобные проблемы.

Так что в вашемcase try lblNumbersValue.requestLayout();.

...