Масштабирование JPanels с помощью Miglayout

У меня есть одна большая JPanel, в которую можно добавить 0-4 панели JPanel в виде строк.
Я хочу, чтобы добавленные панели масштабировались до размера большой панели, к которой они добавляются (в зависимости от того, сколько панелей присутствует)
1 панель = 100% панели
2 панели = 50% панели на каждую
3 панели = 33% панели на каждую
Мое хитроумное решение состояло в том, чтобы разделить большую панель на 12 рядов/ячеек (делящихся на 3 и 4)

setLayout(new MigLayout("","[100%]","[8.3%][8.3%][8.3%][8.3%][8.3%][8.3%][8.3%][8.3%][8.3%][8.3%][8.3%][8.3%]")); 

а затем в зависимости от того, сколько панелей добавлено, масштабируйте их размах

if(count == 1){
 add(panel1, "cell 0 0, span 1 12, grow");
}
else if (count == 2){
add(panel1, "cell 0 0, span 1 6, grow");
add(panel2, "cell 0 6, span 1 6, grow");
...
...

Это работает... но очень уродливо, и я уверен, что должен быть более простой способ.


person guy_sensei    schedule 29.04.2020    source источник
comment
Используйте панель с GridLayout. Именно так это и работает, и вам не нужны никакие причудливые ограничения.   -  person camickr    schedule 29.04.2020
comment
@camickr Я открыл GridLayout, но не знаю, как это реализовать.   -  person guy_sensei    schedule 29.04.2020


Ответы (1)


Я открыл GridLayout, но не знаю, как реализовать.

Почему вы используете MigLayout, если вы даже не знаете, как использовать основные менеджеры компоновки, предоставляемые в JDK?

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

JPanel parent = new JPanel( new GridLayout(0, 1) );
parent.add(child1);
parent.add(child2);
,,,

Ознакомьтесь с учебным пособием Swing по менеджерам компоновки, чтобы узнать об основах всех стандартные менеджеры компоновки.

person camickr    schedule 29.04.2020