BorderLayout把容器的的布局分为五个位置:依次对应为:
上北(NORTH)、下南(SOUTH)、左西(WEST)、右东(EAST),中(CENTER)
BorderLayout特征
1若东、西、南、北位置无控件,则中间控件将自动布满整个屏幕。
2若东、西、南、北位置中无论哪个位置没有控件,则中间位置控件将自动占据没有控件的位置。
3南、北位置控件各占据一行,控件宽度将自动布满整行。
4如果未指定位置,则缺省的位置是CENTER
构造函数
BorderLayout(): //组件之间没有间距(默认间距为0像素)
BorderLayout(int hgap, int vgap) : //组件间距(hgap为横向间距,vgap为纵向间距)
常用方法
setHgap(int hgap) //设置组件之间的水平间距
setVgap(int vgap) //设置组件之间的垂直间距
pack() //容器的方法,根据组件大小,自动调整窗体大小
演示代码
package com.msh.util;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import static javax.swing.WindowConstants.DISPOSE_ON_CLOSE;
public class DemoBorderLayout {
public static void main(String[] args) {
JFrame jf=new JFrame("演示容器的BorderLayout(边界布局)");
jf.setSize(400,300);
BorderLayout bL =new BorderLayout(5,5);//组件间距(横向间距5,纵向间距5)
jf.setLayout(bL);
//jf.setFont(new Font("宋体", Font.BOLD, 14));
jf.add(new Button("btn-East"),BorderLayout.EAST);
jf.add(new Button("btn-West"),BorderLayout.WEST);
jf.add(new Button("btn-South"),BorderLayout.SOUTH);
jf.add(new Button("btn-North"),BorderLayout.NORTH);
jf.add(new Button("btn-Center"),BorderLayout.CENTER);
JPanel jp=new JPanel();
jp.setLayout(new FlowLayout(1,5,5)); //中间容器流式布局
for(int i=0;i<10;i++)
{
JButton b=new JButton(String.valueOf(i));
jp.add(b);
}
//jf.add("Center",jp); //将面板添加到中间位置
jf.pack(); //让窗体自适应组建大小
jf.setSize(400, 200);
//jf.setLocation(400, 300);
jf.setLocationRelativeTo(null); //让窗体居中显示
jf.setBackground(Color.white);
jf.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
jf.setVisible(true);
}
}
注销这行代码 //jf.add("Center",jp);
运行程式
更复杂的布局可以在东、西、南、北和中间位置设置为中间容器,中间容器中再进行布局组件
举例,在中间位置中添加10个按钮
生效这行代码 jf.add("Center",jp);
运行程式