У меня есть одна большая 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");
...
...
Это работает... но очень уродливо, и я уверен, что должен быть более простой способ.
GridLayout
. Именно так это и работает, и вам не нужны никакие причудливые ограничения. - person camickr   schedule 29.04.2020