Масштабирование JPanels с помощью Miglayout - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть одна большая 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");
...
...

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

1 Ответ

0 голосов
/ 29 апреля 2020

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

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

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

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

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

...