Получение правильного поведения размеров в пользовательском компоненте Swing - PullRequest
2 голосов
/ 16 июля 2010

Я создаю пользовательский компонент Swing, который наследуется от JPanel.

Как правильно переопределить / реализовать различные методы определения размеров (getPreferredSize, setPreferredSize, getMinimumSize и т. Д.), Чтобы получить «хороший»поведение ", особенно в отношении:

  • Работа с различными менеджерами компоновки
  • Правильное поведение при вызове setPreferredSize ()
  • Соответствующая реакция при установке границы черезsetBorder ()

Ответы [ 2 ]

2 голосов
/ 16 июля 2010

Не наследуйте от JPanel, если ваш компонент не состоит из нескольких подкомпонентов. В большинстве случаев достаточно наследования от JComponent.

Что касается изменения размера ... переопределить getPreferredSize, getMinimumSize и getMaximumSize методы для получения соответствующего поведения в менеджерах компоновки .

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

0 голосов
/ 17 июля 2010

Хотя это довольно раздражает: это зависит от макета менеджера в этом случае. Обычно компоновщик может лучше всего использоваться вместе с содержимым, чтобы получить хороший макет. Я использовал GridBagLayout, и, привыкнув к нему, я обнаружил, что он работает довольно хорошо, используя правильный GridBagConstraint для каждого компонента. Иногда может помочь и хороший дизайнер визуального интерфейса, например, Netbeans , или вы можете рассмотреть платный, например Swing Designer или JFormDesigner . Может сэкономить ваше время, играя с пикселями.

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