Swing的简单应用

布局管理器(Layout Managers)

作用

布局管理器是个与特定组件相关联的Java对象,在大多数情况下是背景组件。

用来控制所关联组件上携带的其他组件(在Swing中,几乎所有组件都能够安置其他组件),若JFrame上带有JPanel,JPanel上带有JButton,则JFrame的布局管理器控制JPanel的大小和位置,JPanel控制JButton的大小和位置,而JButton上没有其他组件,就不需要布局管理器,JFrame控制不了按钮。

不同的布局管理器有不同的放置策略,有的布局管理器会遵守组件的设定,有的仅会遵守部分设定。

因此,布局管理器不一定会生成你想要的结果,但是可以预测输出的结果。

三个主要的布局管理器

BorderLayout

框架默认的布局管理器;
将背景组件分割为NORTH、WEST、CENTER、EAST、SOUTH这5个区域,并且每个区域上只能放置一个组件。
Swing的简单应用_第1张图片

NORTH、SOUTH区域

会最先占位
若组件在 NORTH和SOUTH区域这两个区域,组件的高度可以自己设定,但是组件的宽度会受布局管理器控制。

WEST、EAST区域

情况与 NORTH、SOUTH区域
若组件在WEST和EAST区域这两个区域,组件的宽度可以自己设定,但是组件的高度会受布局管理器控制,但由于NORTH、SOUTH区域会最先占位, WEST、EAST区域的高度要扣除NORTH、SOUTH区域的高度,如上图。

CENTER区域

只能用WEST、EAST、NORTH、SOUTH区域使用后剩下的区域

FlowLayout(流式布局)

JPanel默认的布局管理器;
依次从左至右、从上到下;
若当前行的剩余水平宽度能够容纳组件,则使用当前行来放置组件,否则利用新的行来放置组件。

BoxLayout

布局模式与FlowLayout类似,但是每个新的组件都会利用新行来放置;

BoxLayout与FlowLayout的共同点:
1.按照加入的顺序来排列组件;
2.让每个组件使用默认的大小;

setLayout()方法

用于修改组件的布局管理器;
例:
JFrame 的默认布局管理器是BorderLayout,将其修改为BoxLayout

JFrame frame = new JFrame();
frame.setLayout(new BoxLayout(frame,BoxLayout.Y_AXIS));
//BoxLayout的构造函数需要知道哪个组件,以及使用哪个轴排列组件
//BoxLayout.Y_AXIS便是对组件进行垂直排列
//BoxLayout.X_AXIS便是对组件进行横向排列

你可能感兴趣的:(Swing的简单应用)