import java.awt.*;
import javax.swing.*;
public class LayoutTest extends JFrame{
JButton btn1,btn2,btn3,btn4,btn5;//定义按钮
JPanel mainPan;
FlowLayout fLayout;//定义流式布局
GridLayout gLayout;//定义网格布局
BorderLayout bLayout;//定义边界布局
CardLayout cLayout;//定义卡片布局
public LayoutTest(String layoutstyle){
super("布局方式:"+layoutstyle);
mainPan=new JPanel();
fLayout=new FlowLayout(FlowLayout.LEFT);//创建流式布局方式的对象
gLayout=new GridLayout(3,2);//创建网格布局方式的对象
bLayout=new BorderLayout();//创建边界布局方式的对象
cLayout=new CardLayout(10,10);//创建卡片布局方式的对象
if(layoutstyle=="fLayout")//判断采用流式布局
mainPan.setLayout(fLayout);
else if(layoutstyle=="gLayout")//判断网格流式布局
mainPan.setLayout(gLayout);
else if(layoutstyle=="bLayout")//判断采用边界布局
mainPan.setLayout(bLayout);
else if(layoutstyle=="cLayout")//判断采用卡片布局
mainPan.setLayout(cLayout);
else
System.out.println("布局方式输入错误!");
getContentPane().add(mainPan);//参加按钮类的对象
btn1=new JButton("按钮1");//创建按钮类的对象
btn2=new JButton("按钮2");//创建按钮类的对象
btn3=new JButton("按钮3");//创建按钮类的对象
btn4=new JButton("按钮4");//创建按钮类的对象
btn5=new JButton("按钮5");//创建按钮类的对象
if(layoutstyle=="fLayout"||layoutstyle=="gLayout"){//定义流式布局或网格布局的布局方式
mainPan.add(btn1);
mainPan.add(btn2);
mainPan.add(btn3);
mainPan.add(btn4);
mainPan.add(btn5);
}
if(layoutstyle=="bLayout"||layoutstyle=="cLayout"){//定义边界布局或卡片布局的布局方式
mainPan.add(btn1,"East");
mainPan.add(btn2,"South");
mainPan.add(btn3,"West");
mainPan.add(btn4,"North");
mainPan.add(BorderLayout.CENTER,btn5);
}
setSize(250,150);//设置界面的跨度和高度
setVisible(true);//设置界面的可见性
setDefaultCloseOperation(EXIT_ON_CLOSE);//设置窗口关闭时默认操作
}
public static void main(String[] args) {
// TODO 自动生成的方法存根
new LayoutTest("fLayout");//实例化
new LayoutTest("gLayout");
new LayoutTest("bLayout");
new LayoutTest("cLayout");
}
}
运行结果
知识点:
该程序实现了4种不同的按钮布局,这四种布局分别是FlowLayout、BorderLayout、CardLayout、GridLayout。
(1)FlowLayout(流式布局):将组件从上到下,从左到右依次摆放,每行均居中,是Panel、Applet的默认布局。
(2)BorderLayout(边界布局):将容器内空间划分为东南西北中五个方位,布局时要指明组件所在方位,它是Window、Dialog、Frame默认布局方式。
(3)CardLayout(卡片布局):将组件像卡片一样放在容器内,在某一个时刻只有一个组件可见。
(4)GridLayout(网格布局):这个布局类似一个无框线的表格,每个单元格中放置一个组件。
心得体会:通过这个程序我知道了布局,也了解容器内组件的位置和大小是由布局管理器决定的,在这个程序中学到了四个布局方式的知识要点;比如FlowLayout(流式布局)将组件从上到下,从左到右依次摆放,每行均居中,是Panel、Applet的默认布局。 一个程序的编程离不开理论知识要点,知识要点的实践也离不开程序的编程,所以这学习编程时,两者不可少。