2015-03-16 2 views
0

Я создаю интерфейс, составленный из макета коробки, который содержит панели внутри каждого пространства.Динамически изменяйте размер панели в Swing

В этом конкретном случае у меня есть «каскад» панелей, первый должен быть панелью с FlowLayout в качестве менеджера макетов, под ней есть GridLayout, и под ним должен быть другой ярлык.

Дело в том, что мне понадобится первая панель для динамического изменения размера, поскольку окно будет изменяться самостоятельно.

Вот проблема: мне нужна первая панель, которая имеет определенный размер по отношению к абсолютному размеру. Дело в том, что я не могу установить свой предпочтительный размер .. в классе я делаю следующее, но панель остается точно такой же размер, как и раньше ..

this.setPreferredSize(new Dimension(windowWidth, 50)) 

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

+1

Когда макет начинает становиться сложным, изучите GridBagLayout. – BarrySW19

+1

1) * «Я отправлю код, как только я вернусь домой». * Нет, не отправляйте дамп кода или несжимаемые фрагменты. Чтобы лучше помочь, опубликуйте [MCVE] (http://stackoverflow.com/help/mcve) (минимальный полный проверяемый пример) или [SSCCE] (http://www.sscce.org/) (Short, Self Contained , Правильный пример). 2) 'this.setPreferredSize (новый размер (windowWidth, 50))' См. [Следует ли избегать использования методов Set (Preferred | Maximum | Minimum) в Java Swing?] (Http://stackoverflow.com/q/ 7229226/418556) (Да.) –

ответ

1

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

Ваша главная панель должна быть BorderLayout (что раскладка по умолчанию в JFrame), а не BoxLayout.

Затем вы добавляете панель, которая должна быть определенного размера для BorderLayout.NORTH кадра.

Затем ваша вторая панель может использовать BoxLayout и добавить эту панель в BorderLayout.CENTER кадра. Теперь эта панель получит все лишнее пространство по мере изменения размера рамки.

Смежные вопросы