BoxLayout布局管理器,这种布局方式是在行或列中楞放组件.如果沿用水平方向排列组件,当组件的总宽度超出容器的宽度时,组件不会换行,而是继续沿同一行排列组件。
如果采用竖直方向排列组件的方式,当组件的总高度超出容器的高度时,组件也不会换列,而是沿同列继续排列组件。 这时需要改变容的大小才能看到所有的组件,即有些组件可能处于不可见状态。
BoxLayout 提供了如下一个简单的构造器,构造方法和常用方法如表12.21所示。
方法声明 | 功能描述 | |
---|---|---|
BoxLayout(Container target, int axis) | 创建基于 target 容器的 BoxLayout 布局管理器,该布局管理器里的组件按 axis 方向排列。其中 axis 有 BoxLayout.X_AXIS( 横向)和 BoxLayout.Y _AXIS (纵向〉两个方向。 | |
public final Container getTarget() | 返回使用此布局管理器的容器 | |
void next(Container parent) | 翻到下一张卡片 |
接下来通过一个案例来演示BoxLayout布局管理器的使用,如例12-21所示。
例12-21 Demo1221.java
1import java.awt.*;
2import javax.swing.*;
3public class Demo1221 {
4 public static void main(String[] args) {
5 //1.创建JFrame对象
6 JFrame jFrame = new JFrame("JFrame窗口下的BoxLayout布局管理器");
7 //获取窗口jFrame的内容窗格
8 Container app=jFrame.getContentPane();
9 //2.创建BoxLayout布局管理器,指定组件排列方向为纵向
10 BoxLayout boxLayout = new BoxLayout(app, BoxLayout.X_AXIS);
11 jFrame.setSize(300,150);
12 jFrame.setResizable(false);
13 jFrame.setLayout(boxLayout);
14 //3.往frame对象中添加两个按钮
15 jFrame.add(new JButton("论语"));
16 jFrame.add(new JButton("诗经"));
17 jFrame.add(new JButton("中庸"));
18 //4.设置jFrame最佳大小,并可见
19 jFrame.setVisible(true);
20 jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
21 }
22}
如图12.23,程序的运行结果创建了一个BoxLayout对象boxLayout,指定目标容器为窗口对象jFrame的内容窗格。如果将BoxLayout.X_AXIS改为BoxLayout.Y_AXIS,则程序的运行结果为12.23右图。