Java Layout总结

BorderLayout布局管理器:
BorderLayout 也是一种非常简单的布局策略,它把容器内的空间简单地划分为:North,South,East,West和Center 5个区域,每加入一个组件都应该指明把这个组件加在哪个区域中。BorderLayout是顶层容器(Window,Frame, Dialog)的默认布局管理器。

BorderLayout界面最多只能显示5个控件,若在一个区域中加上多个component,则只有最后加上的那个是可见的。加入控件的时候,可以指定加入的方位,默认的情况是加入到中间。

当容器的大小发生变化时,用BorderLayout管理的组件会发生变化,其变化规律是:组件的相对位置不变,大小发生变化.例如容器变高了,则North、South 区域不变,West、Center、East区域变高;如果容器变宽了,West、East区域不变,North、Center、South区域变宽.不一定所有的区域都有组件,如果四周的区域(West、East、North、South区域)没有组件,则由Center区域去补充,但是如果 Center区域没有组件,则保持空白.

//使用BorderLayout的构造方法,可设置其component的间距。如: 
BorderLayout(); //component间没有间距 
BorderLayout(int hgap,int vgap); // hgap和vgap分别对应水平和垂直方向的间距。
import java.awt.*;
public class buttonDir{
      public static void main(String args[]){
            Frame f = new Frame("BorderLayout");
            f.setLayout(new BorderLayout());
            f.add("North", new Button("North");
            f.add("South", new Button("South");
            f.add("East", new Button("East");
            f.add("West", new Button("West");
            f.add("Center", new Button("Center");
            f.setSize(200,200);
            f.setVisible(true);
      }
}

FlowLayout布局管理器:
流式布局管理器把容器看成一个行集,好象平时在一张纸上写字一样,一行写满就换下一行。行高是用一行中的控件高度决定的。FlowLayout是Panel的默认布局。在生成流式布局时能够指定显示的对齐方式,默认情况下是居中(FlowLayout.CENTER)。当容器的大小发生变化时,用FlowLayout管理的组件会发生变化,其变化规律是:组件的大小不变,但是相对位置会发生变化.

FlowLayout()  //生成一个默认的流式布局,组件在容器里居中,每个组件之间留下5个像素的距离. 
FlowLayout(int alinment) //align决定component的位置,其值有FlowLayout.LEFT
FlowLayout(int alignment,int hgap,int vgap) //hgap和vgap分别对应水平和垂直方向的间距,缺省为5单位(unit)

GirdLayout布局管理器:
Grid布局管理器提供了放置component的灵活手段。程序员可以建立一个有多行和多列的布局管理器,然后component就可以按一定的次序(从左到右,从上到下)进行排列。

当Grid布局管理器对应的窗口发生变化时,内部component的相对位置并不变化,只有大小发生变化。

Grid布局管理器总是忽略component倾向的大小(prefered size),它把每个component的大小设置成相同的。

GridLayout() //缺省建立一行的布局,每个component占居一列 
GridLayout(int rows, int cols) //建立指定行和列的布局,rows和cols对应行数和列数 
GridLayout(int rows, int cols, int hgap, int vgap) //建立指定行列数和间距的布局,hgap和vgap分别对应水平和垂直间距。

当控件数多于或少于构造函数里的行数和列数时,行数时固定的,列数根据情况增减。另,构造函数里的行数和列数能够有一个为零,但是不能都为零。当容器里增加控件时候,容器内将向0的那个方向增长。

1 week ago, this page was being read.

,

Subscribe to Comments