Что нужно сделать, чтобы панель работала с нулевым менеджером макета? - PullRequest
2 голосов
/ 22 августа 2010

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

У меня сейчас похожие проблемы с другой панелью, использующей нулевой менеджер раскладки. Однако я нигде не могу найти эту страницу! Так что это за вещи?

В процессе задания этого вопроса я разобрался в своей проблеме. Я все еще хочу добавить эти знания на сайт, поскольку нигде не смог найти этот вопрос. Это может быть полезно для кого-то еще.

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

Ответы [ 2 ]

1 голос
/ 22 августа 2010

Добавление компонента в контейнер - это то, что вы делаете независимо от того, используете ли вы нулевой макет или LayoutManager.

При использовании нулевого макета вам нужно помнить 3 вещи:

  1. установить размер компонента (обычно предпочтительный размер)

  2. установить местоположение компонента

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

1 голос
/ 22 августа 2010

Я нашел ссылку, которую искал:

http://download.oracle.com/javase/tutorial/uiswing/layout/none.html

Это дает три вещи:

  • Установить менеджер макета контейнера на NULL с помощьювызов Container.setLayout(null).
  • вызов Component.setBounds() для каждого из дочерних элементов контейнера.
  • вызов Component.repaint()

Как оказалось, моя проблема былачто я не делал ничего дополнительного:

  • Добавьте каждый компонент в контейнер, используя Container.add(Component)
...