如何使JLabel从下一行开始

Jes*_*ssy 10 java swing jlabel jpanel layout-manager

JPanel pMeasure = new JPanel();
....
JLabel economy = new JLabel("Economy");
JLabel regularity = new JLabel("Regularity");
pMeasure.add(economy);
pMeasure.add(regularity);
...
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,我得到这个输出:

Economy Regularity
Run Code Online (Sandbox Code Playgroud)

如何获得此输出,每个JLabel在新行上启动?谢谢

Economy  
Regularity
Run Code Online (Sandbox Code Playgroud)

Joh*_*ica 19

您将想要使用布局管理器来控制您的控件的定位和大小JPanel.布局管理器负责放置控件,确定它们的位置,它们的大小,它们之间的空间大小,调整窗口大小时会发生什么等等.

有大量不同的布局管理器,每个布局管理器允许您以不同的方式布局控件.默认的布局管理器FlowLayout,正如您所见,只是将组件从左到右放置在彼此旁边.那是最简单的.其他一些常见的布局管理器是:

  • GridLayout - 将组件排列在具有相等大小的行和列的矩形网格中
  • BorderLayout - 中心有一个主要部件,上面,下面,左边和右边有四个周围的部件.
  • GridBagLayout - 所有内置布局管理器的Big Bertha,它是最灵活但也最复杂的使用.

例如,您可以使用BoxLayout来布局标签.

BoxLayout要么将其组件堆叠在一起,要么将它们放在一排 - 您的选择.您可能会将其视为一个版本FlowLayout,但功能更强大.下面是一个应用程序的图片,演示了如何使用BoxLayout显示组件的居中列:

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);
...
Run Code Online (Sandbox Code Playgroud)


pri*_*ero 5

我读了这段代码:

 pMeasure.setLayout(new BoxLayout(pMeasure, BoxLayout.VERTICAL));
Run Code Online (Sandbox Code Playgroud)

似乎BoxLayout没有VERTICAL.在搜索时,这将使用以下代码:

 pMeasure.setLayout(new BoxLayout(pMeasure, BoxLayout.Y_AXIS));
Run Code Online (Sandbox Code Playgroud)