首页 > 代码库 > 布局管理器

布局管理器

技术分享

什么是布局管理器?你一个frame里面一般有几个panel对吧,你如果要自己调它们的位置,大小的话会比较麻烦,而且当窗口变大的时候它里面的panel又不会跟着变大,就很烦恼。所以,我们有这个东西,布局管理器,相当于一个小管家,你只要把panel啊,component什么的扔进去,他自己会帮你排好它的。

封装布局管理器的类在这个LayoutManager接口里面,不同的布局管理器有不同的布局风格。

首先看个FlowLayout:

技术分享

这个是panel类的默认布局管理器,就是你不指定panel的布局管理器的话,就默认是这个。 

例子:

import java.awt.*;

public class TestFlowLayout {
    public static void main(String[] args) {
        Frame f = new Frame("lalaalla FlowLayout");
        Button b1 = new Button("打开");
        Button b2 = new Button("放屁");
        Button b3 = new Button("关闭");
        f.setLayout(new FlowLayout());//参数要是实现了接口LayoutManager的类
        f.add(b1);
        f.add(b2);
        f.add(b3);
        f.setBounds(500,500,500,500);
        f.setBackground(Color.GREEN);
        f.setVisible(true);
    }
}

FlowLayout l = new FlowLayout(FlowLayout.LEGHT,20,40);第一个参数是对齐方式,第二个是水平间距(零件之间),第三个是垂直间距。

再看另一种管理器,BorderLayout,它是frame类的默认layout管理器。

技术分享

技术分享

代码:

技术分享

提一下,这些BorderLayout.NORTH什么的是int类型的.

GridLayout,grid是小格的意思技术分享

代码:

技术分享

注意这里有个f.pack(),我们平时都是这里用f.setSize()来设定大小,pack()就是刚好在外面包它一圈.

注意,这几种布局管理器你既可以设在frame里面也可以设在panel里面,而panel本身又可以加自在frame里面。 

 

布局管理器