Я пытаюсь создать простой шаблон макета границы и использую frame.pack() для определения размера кадра. У меня есть невидимая метка в центральной области, и метод упаковки, похоже, не учитывает метку, поэтому она не отображается. Я знаю, что изначально это работает, потому что рама изначально имеет правильный размер для других компонентов. Итак, как я могу заставить рамку учитывать невидимую метку? Метка видна только тогда, когда выбрана кнопка в центральной области. Все работает, кроме того, что вам нужно вручную увеличить размер кадра, чтобы увидеть метку.
Использование frame.pack(), когда некоторые компоненты невидимы?
comment
Пожалуйста, опубликуйте SSCCE, показывающий вашу проблему.
- person jfpoilpret   schedule 19.10.2011
Ответы (1)
Я думаю, что это зависит от менеджера компоновки контейнера, содержащего метку. Некоторые менеджеры компоновки вычисляют предпочтительный размер только на основе видимых компонентов, а другие принимают во внимание невидимые компоненты. GroupLayout, например, имеет метод setHonorsVisibility
.
В любом случае, самый простой способ, вероятно, сделать метку невидимой после вызова pack
.
См. также SetVisible(false) изменяет макет моих компонентов в моей панели
person
JB Nizet
schedule
18.10.2011
Я использую диспетчер компоновки Border и пытался вызвать пакет перед тем, как сделать метку невидимой, но я использую frame.pack(), который, как я предполагаю, устанавливает размер возвращаемого JPanel в кадр. Поэтому я не уверен, куда поместить frame.pack().
- person liloka; 19.10.2011