天天看點

java學習記錄(1):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的那個方向增長。

如果要元件自定義位置setBounds(x,y,width,height),則布局要使用null。setLayout(null)。

繼續閱讀