Исходя из моего опыта, лучше всего применять такие ограничения на уровне макета, что обеспечивает более согласованное поведение.
Например,
new MigLayout("insets 0", "[:50:][grow,fill,:50:250]20[:50:][grow,fill,:50:]", "[c]")`
где второй параметр устанавливает свойства макета для столбцов (в данном случае четыре столбца с определенной предпочтительной и максимальной шириной). Затем компоненты добавляются в контейнер с помощью этого менеджера компоновки, просто вызывая
panel.add(cc);
с или без опции "wrap" (которая указывает на необходимость создания новой строки).