目录
第一节 BorderLayout布局管理器介绍
第二节 实例演示
01 BorderLayout布局管理器介绍
BorderLayout是顶层容器中内容窗格的默认布局管理器,它提供了一种较为复杂的组件管理方案。每个由BorderLayout管理的容器被划分成5个区域,分别代表容器的上部(North)、下部(South)、左部(West)、右部(East)和中部(Center),分别使用常量BorderLayout.NORTH、BorderLayout.SOUTH、BorderLayout.WEST、BorderLayout.EAST和BorderLayout.CENTER来表示。在容器的每个区域,可以加入一个组件。BorderLayout定义在java.awt包中,BorderLayout布局管理器有两种构造方法。
• BorderLayout( ):构造一个组件之间没有间距的新的BorderLayout布局管理器。
• BorderLayout(inthgap,intvgap):用指定的组件之间的水平和垂直间距构造一个BorderLayout布局管理器。在BorderLayout布局管理器的管理下,组件必须通过add( )方法加入到容器中的指定区域,例如,下面的语句将一个按钮加入到框架的South区:
frame=new JFrame(”Frame Title“);
button=new JButton(“Press Me“);
frame.getContentPane( ).add(button,BorderLayout.SOUTH);//加入到South
最后一行语句也可以写成:
frame.getContentPane( ).add(button,“South”);
如果在add( )方法中没有指定将组件放到哪个区域,则默认地会被放置在Center区域,
例如:
frame.getContentPane( ).add(button);语句,把按钮放在框架的中部。
在容器的每个区域,只能加入一个组件,如果试图向某个区域中加入多个组件,那么只有最后一个组件是有效的。例如:
frame.getContentPane( ).add(new JButton(“buttonA”),BorderLayout.SOUTH);
frame.getContentPane( ).add(new JButton(“buttonB”),BorderLayoutSOUTH);
frame.getContentPane( ).add(new JButton(“buttonC”),BorderLayout.SOUTH);
最后只有buttonC显示在South区域。如果真的希望在某个区域显示多个组件,可以先在该区域放置一个内部容器,比如JPanel组件,然后将所需的多个组件放到JPanel中,再将其放到指定的区域。通过内部容器的嵌套可以构造复杂的布局。
对于East、South、West和North这4个边界区域,如果某个区域没有使用,那么它的大小将变为零,此时Center区域将会扩展并占据这个未用区域的位置。如果4个边界区域均没有使用,那么Center区域将会占据整个窗口。
02 实例演示
实例代码如下
package com.java.pc;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Subject {
private JFrame frame;
private JButton be,bw,bn,bs,bc;
public static void main(String args[])
{
Subject s=new Subject();
s.go();
}
public void go()
{
frame=new JFrame("Border Layout");
be=new JButton("East");
bs=new JButton("Sourth");
bw=new JButton("WEST");
bn=new JButton("North");
bc=new JButton("Center");
frame.getContentPane().add(be,BorderLayout.EAST);
frame.getContentPane().add(bs,BorderLayout.SOUTH);
frame.getContentPane().add(bw,BorderLayout.WEST);
frame.getContentPane().add(bn,BorderLayout.NORTH);
frame.getContentPane().add(bc,BorderLayout.CENTER);
frame.setSize(350, 200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
最后效果如下