Создайте горизонтальный объект javax.swing.Box, содержащий каждый объект typenPanel.Используя горизонтальные распорки и клей, вы можете делать все, что захотите:
Box b1 = Box.createHorizontalBox();
b1.add( type1Panel );
b1.add( Box.createHorizontalGlue() );
panel.add( b1 );
Для простоты напишите вспомогательный метод, который сделает это за вас:
private Component leftJustify( JPanel panel ) {
Box b = Box.createHorizontalBox();
b.add( panel );
b.add( Box.createHorizontalGlue() );
// (Note that you could throw a lot more components
// and struts and glue in here.)
return b;
}
Тогда:
panel.add( leftJustify( headerPanel ) );
panel.add( leftJustify( type1Panel ) );
panel.add( leftJustify( type2Panel ) );
и т. Д. .... Вы можете стать более привлекательными с каждой строкой, добавляя компоненты, клей и распорки.Мне очень повезло: я вложил в вертикальные и горизонтальные блоки и написал вспомогательные методы, когда я хочу сделать один и тот же макет в блоке несколько раз.Нет предела тому, что вы можете сделать, смешивая компоненты, распорки и клей по мере необходимости.
Я уверен, что есть лучший способ сделать все это, но я еще не нашел его.А динамическое изменение размера позволяет пользователю с короткими битами текста использовать маленькое окно, а пользователю с большим количеством текста изменять его размер, чтобы он все подходил.