1、OverlayLayout是用于排列重叠组件的布局管理器。它的用途是以一些对齐的点为基准将一些组件层叠的放置在布局容器中。组件的横轴和纵轴的对齐点介于0.0和1.0之间。横轴(X轴)上0.0代表组件的左侧面,1.0代表组件的右侧面;纵轴(Y轴)上0.0和1.0分别代表组件的顶部和底部。构造函数publicOverlayLayout(Containertarget)因为构造函数不会为target对象安装结果布局管理器,所以我们还必须调用setLayout()来完成此功能。JPanel p1 = new JPa
2、nel();OverlayLayout overlay = new OverlayLayout(p1);p1.setLayout(overlay); 在OverlayLayout布局管理器中,每个组件都有一对横纵坐标值,每个组件的位置只和它本身的横纵坐标值有关,换句话说就是组件以他自己的位置作为基准,横轴上0.0和1.0分别代表组件的左侧面和右侧面;纵轴上0.0和1.0分别代表组件的顶部和底部,和容器位置无关。如果一个组件的alignmentX属性设置为0.5,原本左侧面的位置对应0.0,现在变成了0.5,
3、那么,现在组件的位置就要向左移动width/2的距离,使左侧面的位置对应现在的0.0。纵轴亦是如此,明白了吗?为了容易理解,我们来看《JavaSwing》中关于OverlayLayout的一段样例程序,它可以编译运行。如图,你可以在输入框中调节容器中3个按钮的X,Y轴的值来看他们在容器中的位置是怎样改变的,多试几次,你就可以完全理解OverlayLayout。// OverlayTest.java// A test of the OverlayLayout manager allowing experime
4、ntation.//import java.awt.*;import java.awt.event.*;import javax.swing.*;public class OverlayTest extends JFrame { public OverlayTest() { super("OverlayLayout Test"); setSize(500, 300); setDefaultCloseOperation(EXIT_ON_CLOSE);
5、 final Container c = getContentPane(); c.setLayout(new GridBagLayout()); final JPanel p1 = new GridPanel(); final OverlayLayout overlay = new OverlayLayout(p1); p1.setLayout(overlay); final JButton jb1 = new JButton("B1"
6、); final JButton jb2 = new JButton("B2"); final JButton jb3 = new JButton("B3"); Dimension b1 = new Dimension(60, 50); Dimension b2 = new Dimension(80, 40); Dimension b3 = new Dimension(100, 60); jb1.setMinimumSize