您需要使用布局管理器来控制JPanel
. 布局管理器负责放置控件,确定它们的位置,它们有多大,它们之间有多少空间,调整窗口大小时会发生什么等。
有许多不同的布局管理器,每一个都允许您以不同的方式布局控件。默认布局管理器是FlowLayout
,正如您所见,它只是将组件从左到右彼此相邻放置。这是最简单的。其他一些常见的布局管理器是:
GridLayout
- 将组件排列在具有相同大小的行和列的矩形网格中
BorderLayout
- 中心有一个主要组件,上方、下方、左侧和右侧最多有四个周边组件。
GridBagLayout
- 所有内置布局管理器中的Big Bertha,它是最灵活但使用最复杂的。
例如,您可以使用BoxLayout来布置标签。
BoxLayout
要么将其组件堆叠在一起,要么将它们排成一排——你的选择。您可能会将其视为 的一个版本FlowLayout
,但具有更强大的功能。这是一个应用程序的图片,演示了如何使用BoxLayout
来显示一个居中的组件列:

使用代码的示例BoxLayout
是:
JPanel pMeasure = new JPanel();
....
JLabel economy = new JLabel("Economy");
JLabel regularity = new JLabel("Regularity");
pMeasure.setLayout(new BoxLayout(pMeasure, BoxLayout.Y_AXIS));
pMeasure.add(economy);
pMeasure.add(regularity);
...