Изменение размера композита с помощью FormLayout, когда его дочерний элемент становится шире, чем отображаемая область

Я использую SWT. У меня есть родительский Composite(уровень 1), который использует FormLayout, и он содержит среди прочего еще один Composite(уровень 2) также FormLayout. Этот составной элемент имеет несколько дочерних элементов (уровень 3), которые становятся видимыми и невидимыми в зависимости от пользовательского ввода.

Проблемный сценарий:

  1. композиты уровня 3 не видны
  2. изменен размер составного уровня 1 -> это также изменяет составной уровень уровня 2
  3. изменения пользовательского ввода -> композиты уровня 3 теперь видны
  4. проблема -> составной уровень 2 не изменяется, а составные элементы уровня 3 видны не все

Я должен изменить размер составного уровня 1, чтобы корректно изменить размер составного слоя 2, что не очень удобно для пользователя. Я перепробовал много вещей, но безуспешно, и поскольку все это является частью более крупного приложения, я не могу заменить FormLayout чем-то другим.

У кого-нибудь есть мнение по этому поводу? Есть ли какой-нибудь механизм, как заставить композиты FormLayout динамически изменять размер?

Спасибо Ян

1 ответ

Решение

Как и любая смелая проблема, у этой проблемы было простое решение. Чтобы сделать композиты уровня 3 видимыми, необходимо было getParent().layout() чтобы компоновка уровня 2 правильно изменила размеры

Другие вопросы по тегам