Java Layout - оставляя определенное пространство для невидимого элемента - PullRequest
2 голосов
/ 04 января 2012

Я делаю свинг-приложение для себя и пробовал несколько разных макетов.Одна проблема, с которой у меня возникают проблемы во всех макетах, которые я пробовал (BoxLayout, FlowLayout, BorderLayout, GroupLayout), заключается в том, что я хочу скрыть один из своих элементов, но я хочу оставить пустое пространство точного размера.на своем месте.В тот момент, когда элемент исчезает, или если я установил элемент как невидимый при запуске, то либо все окно будет меньше, либо произойдет что-то, например, текстовое поле расширится до смешного размера.

Указаниеразмеры элементов, кажется, не влияют вообще.

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

Почему мои элементы неучитывая размеры, которые я указываю?

Благодарен за любые указатели.

Большое спасибо

Ответы [ 3 ]

7 голосов
/ 04 января 2012

Попробуйте Box.createRigidArea.Описание достаточно простое:

Создает невидимый компонент всегда указанного размера.

Это создает Component, который можно использовать в любом макете.

1 голос
/ 05 января 2012

Единственный полностью безопасный способ «хотеть скрыть один из моих элементов, но я хочу оставить на его месте пустое пространство точного размера» - это LayoutManager, который включает невидимые компоненты в процесс макета.Если ни одна из основных реализаций не делает этого, используйте сторонний менеджер, например fi MigLayout.

Примечание: Box.RigidArea имеет фиксированный размер - поэтому его достаточно для заполнителя в определенном состоянии макета, но длянастраивается вручную при изменении размера родительского элемента.

0 голосов
/ 04 января 2012

Попробуйте разместить component.setVisible(false); после frame.pack();

...