Размер ярлыка SWT обновлен неправильно - PullRequest
3 голосов
/ 26 сентября 2011

Я новичок в Java / SWT.У меня возникают некоторые проблемы с использованием SWT-метки .

. Когда я обновляю текст на метке, его размер обновляется неправильно (метка обрезается, учитывая исходный размер).Однако, если я выполняю очень маленькое изменение размера в моем диалоговом окне, размер обновляется правильно.

По сути, я создаю метку с текстом по умолчанию, а затем, когда я загружаю данные, я обновляю метку с реальным текстом, это больше, чем оригинал.

Я попытался позвонить label.update() и label.redraw() без удачи.

Ответы [ 3 ]

12 голосов
/ 26 сентября 2011

Попробуйте позвонить parent.layout(), где parent - это Composite, который содержит ваш ярлык.Также см. Общие сведения о макетах в SWT .

2 голосов
/ 20 ноября 2016

Я знаю, что это старый, но чтобы не потерять какие-либо настройки LayoutData, которые могут быть установлены на элементах управления. Вам следует позвонить getParent().requestLayout(). Документация особенно отговаривает пользователя getParent().layout(), который теряет все настройки кэшированных данных на элементах управления.

0 голосов
/ 18 марта 2019

Использование этого метода не рекомендуется, так как это наименее эффективный способ запуска макета. Использование layout (true) отбрасывает всю кэшированную информацию о макете, даже из элементов управления, которые не изменились. Гораздо эффективнее вызывать Control.requestLayout () для каждого элемента управления, который изменился в макете, чем вызывать этот метод в самом макете.

Основываясь на документации getParent().layout(), вы должны вызывать requestLayout() на самом элементе управления, а не на его родительском элементе, как сказал @kingargyle.

То, что я всегда делал, было label.requestLayout(), и оно работало безупречно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...