Альтернативное решение для нулевого менеджера макета, когда требуется абсолютное позиционирование - PullRequest
3 голосов
/ 26 марта 2011

Несколько месяцев назад я прочитал это руководство по Swing http://zetcode.com/tutorials/javaswingtutorial/resizablecomponent/, чтобы понять, как реализовать изменяемые размеры компонентов в Swing.

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

В обсуждении относительно другой темы @ Эндрю Томпсон отметил, что использование нулевого макета - плохая идея.В этой статье http://download.oracle.com/javase/tutorial/uiswing/layout/none.html описан нулевой менеджер макетов как нежелательный, в любом случае говорится, что в определенных ситуациях это может быть полезно.

В ситуации, когда:

  1. iнужно абсолютное позиционирование для дочерних компонентов JPanel
  2. мне нужно реализовать собственные условия ограничивающего прямоугольника для дочерних компонентов (чтобы установить возможные ситуации с перекрытием)
  3. мне нужно, чтобы дочерний компонент JPanel был изменяемого размера

Правильно ли в описанной ситуации использовать нулевой менеджер макетов?

Или есть другие более эффективные решения для достижения этих целей с использованием менеджера макетов для моего компонента контейнера JPanel?

заранее спасибо

1 Ответ

2 голосов
/ 26 марта 2011

Лучшим решением было бы реализовать собственный LayoutManager (или расширить существующий, если он действительно соответствует вашим потребностям) с использованием функций и элементов управления, которые вы ищете.Ваши требования по абсолютному позиционированию просто станут методом вашего менеджера компоновки.

Например, в прошлом я следовал методам расширения FlowLayout, чтобы дать ему возможность правильно оборачивать элементы, когда они содержатся в JScrollPane. Вот пример , хотя это не тот, который я использовал.

...