步骤:
1、JFrame窗体
2、窗体里添加容器
3、容器添加面板
4、构件可以添加到“容器”中,也可以添加到“面板”里,显示效果不同。
提醒:关于网格布局(GridLayout),行和列的关系说明可以看往期的“网格布局”的博文
四大布局:
网格布局: GridLayout
边界布局: BorderLayout
流布局: FlowLayout
绝对布局: setLayout(null);
效果图:
代码:
class FourLayout {
JFrame f = new JFrame();// 新建窗体f
Container c;// 新建“容器”c
public static void main(String[] args) {
// 创建一个Demo类d,class后面的自命名
FourLayout d = new FourLayout();
d.way1();// 窗体属性
d.way2();// 容器镶入窗体,设置面板属性
d.f.setVisible(true);// 窗体可见
}
/**
* 方法way1
* 设置窗体的属性
*/
public void way1(){
f.setSize(900,780);// 窗体f的尺寸
// Location(位置),Relative(相对的),null则为居中(默认)
f.setLocationRelativeTo(null);// 居中显示,null(空值)
// Default(默认),Operration(操作),点×程序停止运行
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/**
* 方法way2
* 设置插入容器中面板的数量、属性
*/
public void way2(){
c=f.getContentPane();// 容器镶入窗体f中
// 网格组布局(行数,列数,水平间距,垂直间距)
c.setLayout(new GridLayout(2,2,20,30));// 容器c建立布局,网格布局
// 面板p_1的属性
JPanel p_1=new JPanel();// 创建面板p_1
p_1.setLayout(new GridLayout(2,1,10,5));// 面板p_1建立布局,边界布局
// Border(边框),Factory(工厂),create(创造),Titled(标题)
p_1.setBorder(BorderFactory.createTitledBorder("p_1"));// 面板p_1添加边框
p_1.setBackground(Color.pink);// 设置背景颜色
// 图片模块标签
JLabel jlb_01_1 = new JLabel();
// 设置水平对齐
jlb_01_1.setHorizontalAlignment(SwingConstants.CENTER);
// 设置边框,RAISED 提高
jlb_01_1.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
jlb_01_1.setIcon(new ImageIcon(ImageLoader.load("Logo_Safran.png")));
JPanel panel_01_2 = new JPanel();
// 设置边框,标题边框, LEADING 领先的
panel_01_2.setBorder(BorderFactory.createTitledBorder("01-2"));
panel_01_2.setLayout(null);// 面板p_1建立布局,边界布局
JPanel panel_01_2_1 = new JPanel();
// 设置边框,标题边框, LEADING 领先的
panel_01_2_1.setBorder(BorderFactory.createTitledBorder("01-2-1"));
// 400* 120
panel_01_2_1.setBounds(10,10, 240, 140);
JPanel panel_01_2_2 = new JPanel();
// 设置边框,标题边框, LEADING 领先的
panel_01_2_2.setBorder(BorderFactory.createTitledBorder("01-2-2中国"));
panel_01_2_2.setBounds(255,10, 155, 140);
panel_01_2.add(panel_01_2_1);
panel_01_2.add(panel_01_2_2);
p_1.add(jlb_01_1);// 边界布局,西
p_1.add(panel_01_2);// 边界布局,东,p_1
c.add(p_1);
// 面板p_2的属性
JPanel p_2=new JPanel();// 创建面板
p_2.setLayout(new GridLayout(1,2,20,5));// p_1建立布局,网格布局;行,列,水平间距,竖直间距
// Border(边框),Factory(工厂),create(创造),Titled(标题)
p_2.setBorder(BorderFactory.createTitledBorder("p_2"));// 面板p_2添加边框
p_2.setBackground(Color.GREEN);// 背景颜色
// p_2里添加按钮
for(int i=0;i<2;i++){
p_2.add(new JButton("按钮"+i));
}
c.add(p_2);// 面板p_2放于容器中
// 面板p_3的属性
JPanel p_3=new JPanel();// 创建面板
p_3.setLayout(new FlowLayout());// p_3建立布局,流布局,需要在前面添加import java.awt.FlowLayout;
// Border(边框),Factory(工厂),create(创造),Titled(标题)
p_3.setBorder(BorderFactory.createTitledBorder("p_3"));// 面板p_3添加边框
p_3.setBackground(Color.YELLOW);// 背景颜色
// p_3里添加按钮
for(int i_2=0;i_2<10;i_2++){
p_3.add(new JButton("按钮"+i_2));
}
c.add(p_3);// 面板p_3放于容器中
// 面板p_4的属性
JPanel p_4=new JPanel();// 创建面板
// Border(边框),Factory(工厂),create(创造),Titled(标题)
p_4.setBorder(BorderFactory.createTitledBorder("p_4"));// 面板p_4添加边框
p_4.setBackground(Color.BLUE);// 背景颜色
p_4.setLayout(null);// 绝对布局
JButton b_4=new JButton("按钮p_4");// 创建按钮
// 左上角为(0,0)坐标
b_4.setBounds(20,40,300,200);// 坐标,尺寸
p_4.add(b_4);
c.add(p_4);// 面板p_4放于容器中
}
}