二級(jí)Java考試輔導(dǎo)教程:5.1用AWT生成圖形化用戶界面[3]

字號(hào):

在使用BorderLayout的時(shí)候,如果容器的大小發(fā)生變化,其變化規(guī)律為:組件的相對(duì)位置不變,大小發(fā)生變化。例如容器變高了,則North、South區(qū)域不變,West、Center、East區(qū)域變高;如果容器變寬了,West、East區(qū)域不變,North、Center、South區(qū)域變寬。不一定所有的區(qū)域都有組件,如果四周的區(qū)域(West、East、North、South區(qū)域)沒有組件,則由Center區(qū)域去補(bǔ)充,但是如果Center區(qū)域沒有組件,則保持空白,其效果如下幾幅圖所示:
    North區(qū)域缺少組件 
    North和Center區(qū)域缺少組件
    3. GridLayout
    使容器中各個(gè)組件呈網(wǎng)格狀布局,平均占據(jù)容器的空間。
    例5.6
    import java.awt.*;
    public class ButtonGrid {
    public static void main(String args[]) {
     Frame f = new Frame("GridLayout");
     f.setLayout(new GridLayout(3,2));
           //容器平均分成3行2列共6格
     f.add(new Button("1")); //添加到第一行的第一格
     f.add(new Button("2")); //添加到第一行的下一格
     f.add(new Button("3")); //添加到第二行的第一格
     f.add(new Button("4")); //添加到第二行的下一格
     f.add(new Button("5")); //添加到第三行的第一格
     f.add(new Button("6")); //添加到第三行的下一格
     f.setSize(200,200);
     f.setVisible(true);
    }
    } 來源:www.examda.com
    5.1.4 LayoutManager 布局管理器(2)
    4. CardLayout
    CardLayout布局管理器能夠幫助用戶處理兩個(gè)以至更多的成員共享同一顯示空間,它把容器分成許多層,每層的顯示空間占據(jù)整個(gè)容器的大小,但是每層只允許放置一個(gè)組件,當(dāng)然每層都可以利用Panel來實(shí)現(xiàn)復(fù)雜的用戶界面。牌布局管理器(CardLayout)就象一副疊得整整齊齊的撲克牌一樣,有54張牌,但是你只能看見最上面的一張牌,每一張牌就相當(dāng)于牌布局管理器中的每一層。
    例5.7
    import java.awt.*;
    import java.awt.event.*; //事件處理機(jī)制,下一節(jié)的內(nèi)容
    public class ThreePages implements MousListener {
    CardLayout layout=new CardLayout(); //實(shí)例化一個(gè)牌布局管理器對(duì)象
    Frame f=new Frame("CardLayout");
    Button page1Button;
    Label page2Label; //Label是標(biāo)簽,實(shí)際上是一行字符串
    TextArea page3Text; //多行多列的文本區(qū)域
    Button page3Top;
    Button page3Bottom;
    public static void main(String args[])
    { new ThreePages().go(); }
    Public void go()
    {   f.setLayout(layout); //設(shè)置為牌布局管理器layout
    f.add(page1Button=new Button("Button page"),"page1Button"); /*第二個(gè)參數(shù)"page1Button"表示的是你對(duì)這層牌所取的名字*/
    page1Button.addMouseListener(this); //注冊(cè)監(jiān)聽器
    f.add(page2Label=new Label("Label page"),"page2Label");
    page2Label.addMouseLisener(this); //注冊(cè)監(jiān)聽器
    Panel panel=new Panel();
    panel.setLayout(new BorderLayout());
    panel.add(page3Text=new TextArea("Composite page"),"Center");
    page3Text.addMouseListener(this);
    panel.add(page3Top=new Button("Top button") , "North");
    page3Top.addMouseListener(this);
    panel.add(page3Bottom=new Button("Bottom button") ,"South");
    page3Bottom.addMouseListener(this);
    f.add(panel,"panel");
    f.setSize(200,200);
    f.setVisible(true);
    }
    ……
    }