Я получил панель с динамической шириной. Компоненты, добавленные на панель, должны располагаться слева направо до 4 компонентов (ячеек) на строку, где каждый компонент / ячейка занимают 25% ширины панелей. Если имеется только один компонент, он должен заполнять 25% родительской ширины - оставшиеся 75% (3 ячейки) пространства должны быть пустыми.
Я заставил его работать, используя хак, но я не доволен этой реализацией - использованием ячеек и созданием «пустой» панели для каждой неиспользуемой ячейки. Смотрите фрагмент кода ниже:
MigLayout migLayout = new MigLayout("fillx, insets 0, wrap 4", "", "");
JPanel panel = new JPanel(migLayout);
JLabel label1 = new JLabel("1");
JLabel label2 = new JLabel("2");
JPanel filler1 = new JPanel();
JPanel filler2 = new JPanel();
panel.add(label1, "cell 0 0);
panel.add(label2, "cell 1 0);
panel.add(filler1, "cell 2 0);
panel.add(filler2 , "cell 3 0);
Это дает то, что можно проиллюстрировать, как показано ниже, где внешняя скобка - это внешняя панель, а две внутренние скобки - это метки:
[ [ 1 ] [ 2 ] ]
Вместо использования наполнителей я надеялся, что его можно установить с ограничениями, что-то вроде этого:
MigLayout migLayout = new MigLayout("always 4 cells, fillx", "[fill][fill][fill][fill]", "");
JPanel panel = new JPanel(migLayout);
JLabel label1 = new JLabel();
JLabel label2 = new JLabel();
panel.add(label1);
panel.add(label2);
Я пробовал различные ограничения макета и добавлял параметры компонента, но они обычно форматируются следующим образом:
[ [ 1 ] [ 2 ] ]