Java SWT: ширина метки не меняется после изменения ее текста
Прежде всего, это не дубликат. Я много читал об этой проблеме здесь в stackru и применил все предложенные решения (пакет 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 ответ
Решение
Начиная с SWT 4.6, наиболее надежным способом запуска обновления макета является Control.requestLayout()
,
Это должно решить такие проблемы.
Так что в вашем случае попробуйте lblNumbersValue.requestLayout();
,