Вы можете использовать BoxLayout для этого:
JPanel verticalPane = new JPanel();
verticalPane.setLayout(new BoxLayout(verticalPane, BoxLayout.Y_AXIS));
JScrollPane pane = new JScrollPane(verticalPane);
//add what you want to verticalPane
verticalPane.add(new JButton("foo"));
verticalPane.add(new JButton("bar"));
Это, конечно, будет использовать предпочтительный размер каждого добавленного компонента.Если вы хотите изменить предпочтительный размер, например, JPanel, увеличьте его и переопределите getPreferredSize:
class MyPanel extends JPanel(){
public Dimension getPreferredSize(){
return new Dimension(100,100);
}
}
Примечание: BoxLayout будет учитывать getPreferredSize, другие LayoutManager могут не иметь.
Пожалуйста, критикуйте мой ответ, я не уверен, что он полностью правильный, и мне любопытно услышать возражения, чтобы узнать, понял ли я проблему.