隨筆 - 71  文章 - 15  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          因?yàn)榭诳剩系蹌?chuàng)造了水;
          因?yàn)楹诎担系蹌?chuàng)造了火;
          因?yàn)槲倚枰笥眩陨系圩屇銇淼轿疑磉?br> Click for Shaanxi xi'an, Shaanxi Forecast
          ╱◥█◣
            |田|田|
          ╬╬╬╬╬╬╬╬╬╬╬
          If only I have such a house!
          〖總在爬山 所以艱辛〗
          Email:myesjoy@yahoo.com.cn
          NickName:yesjoy
          MSN:myesjoy@hotmail.com
          QQ:150230516

          〖總在尋夢 所以苦痛〗

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          Hibernate在線

          Java友情

          Java認(rèn)證

          linux經(jīng)典

          OA系統(tǒng)

          Spring在線

          Structs在線

          專家專欄

          企業(yè)信息化

          大型設(shè)備共享系統(tǒng)

          工作流

          工作流產(chǎn)品

          網(wǎng)上購書

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          1.4 LayoutManager 布局管理器(1)

            java為了實(shí)現(xiàn)跨平臺(tái)的特性并且獲得動(dòng)態(tài)的布局效果,java將容器內(nèi)的所有組件安排給一個(gè)"布局管理器"負(fù)責(zé)管理,如:排列順序,組件的大小、位置,當(dāng)窗口移動(dòng)或調(diào)整大小后組件如何變化等功能授權(quán)給對(duì)應(yīng)的容器布局管理器來管理,不同的布局管理器使用不同算法和策略,容器可以通過選擇不同的布局管理器來決定布局。

            布局管理器主要包括:FlowLayout,BorderLayout,GridLayout,CardLayout,GridBagLayout
          例3

           1 import java.awt.*;
           2 public class ExGui{
           3  private Frame f;
           4  private Button b1;
           5  private Button b2;
           6  public static void main(String args[]){
           7   ExGui that = new ExGui();
           8   that.go();
           9  }
          10  public void go(){
          11   f = new Frame("GUI example");
          12   f.setLayout(new FlowLayout());//設(shè)置布局管理器為FlowLayout
          13   b1 = new Button("Press Me");//按鈕上顯示字符"Press Me"
          14   b2 = new Button("Don't Press Me");
          15   f.add(b1);
          16   f.add(b2);
          17   f.pack();//緊湊排列,其作用相當(dāng)于setSize(),即讓窗口盡量小,小到剛剛能夠包容住b1、b2兩個(gè)按鈕
          18   f.setVisible(true);
          19  }
          20 }
          21 

          運(yùn)行結(jié)果如下:

           1. FlowLayout
            FlowLayout 是Panel,Applet的缺省布局管理器。其組件的放置規(guī)律是從上到下、從左到右進(jìn)行放置,如果容器足夠?qū)挘谝粋€(gè)組件先添加到容器中第一行的最左邊,后續(xù)的組件依次添加到上一個(gè)組件的右邊,如果當(dāng)前行已放置不下該組件,則放置到下一行的最左邊。
            構(gòu)造方法主要下面幾種:
            FlowLayout(FlowLayout.RIGHT,20,40);
            /*第一個(gè)參數(shù)表示組件的對(duì)齊方式,指組件在這一行中的位置是居中對(duì)齊、居右對(duì)齊還是居左對(duì)齊,第二個(gè)參數(shù)是組件之間的橫向間隔,第三個(gè)參數(shù)是組件之間的縱向間隔,單位是象素。*/
            FlowLayout(FlowLayout.LEFT);
            //居左對(duì)齊,橫向間隔和縱向間隔都是缺省值5個(gè)象素

            FlowLayout();
            //缺省的對(duì)齊方式居中對(duì)齊,橫向間隔和縱向間隔都是缺省值5個(gè)象素
          例4

           1 import java.awt.*;
           2 public class myButtons{ 
           3  public static void main(String args[])
           4  {
           5   Frame f = new Frame(); 
           6   f.setLayout(new FlowLayout());
           7   Button button1 = new Button("Ok");
           8   Button button2 = new Button("Open");
           9   Button button3 = new Button("Close");
          10   f.add(button1);
          11   f.add(button2);
          12   f.add(button3);
          13   f.setSize(300,100); 
          14   f.setVisible(true);
          15  }
          16 }

          運(yùn)行結(jié)果如下:

          當(dāng)容器的大小發(fā)生變化時(shí),用FlowLayout管理的組件會(huì)發(fā)生變化,其變化規(guī)律是:組件的大小不變,但是相對(duì)位置會(huì)發(fā)生變化。例如上圖中有三個(gè)按鈕都處于同一行,但是如果把該窗口變窄,窄到剛好能夠放下一個(gè)按鈕,則第二個(gè)按鈕將折到第二行,第三個(gè)按鈕將折到第三行。按鈕"Open"本來在按鈕"OK"的右邊,但是現(xiàn)在跑到了下面,所以說"組件的大小不變,但是相對(duì)位置會(huì)發(fā)生變化"。

           2. BorderLayout
            BorderLayout 是Window,F(xiàn)rame和Dialog的缺省布局管理器。BorderLayout布局管理器把容器分成5個(gè)區(qū)域:North,South,East,West和Center,每個(gè)區(qū)域只能放置一個(gè)組件。各個(gè)區(qū)域的位置及大小如下圖所示:

              
          例5

           1 import java.awt.*;
           2 public class buttonDir{
           3  public static void main(String args[]){
           4   Frame f = new Frame("BorderLayout");
           5   f.setLayout(new BorderLayout());
           6   f.add("North"new Button("North"));//第一個(gè)參數(shù)表示把按鈕添加到容器的North區(qū)域
           7   f.add("South"new Button("South"));//第一個(gè)參數(shù)表示把按鈕添加到容器的South區(qū)域
           8   f.add("East"new Button("East"));//第一個(gè)參數(shù)表示把按鈕添加到容器的East區(qū)域
           9   f.add("West"new Button("West"));//第一個(gè)參數(shù)表示把按鈕添加到容器的West區(qū)域
          10   f.add("Center"new Button("Center"));//第一個(gè)參數(shù)表示把按鈕添加到容器的Center區(qū)域
          11   f.setSize(200,200);
          12   f.setVisible(true); 
          13  }
          14 }

          運(yùn)行結(jié)果如下:

          在使用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ù)容器的空間。

           1 import java.awt.*;
           2 public class buttonGrid {
           3  public static void main(String args[]){
           4   Frame f = new Frame("GridLayout");
           5   f.setLayout(new GridLayout(3,2));//容器平均分成3行2列共6格
           6   f.add(new Button("1")); //添加到第一行的第一格
           7   f.add(new Button("2")); //添加到第一行的下一格
           8   f.add(new Button("3")); //添加到第二行的第一格
           9   f.add(new Button("4")); //添加到第二行的下一格
          10   f.add(new Button("5")); //添加到第三行的第一格
          11   f.add(new Button("6")); //添加到第三行的下一格
          12   f.setSize(200,200);
          13   f.setVisible(true);
          14  }
          15 }

          運(yùn)行結(jié)果如下:

          posted on 2006-01-21 22:23 ★yesjoy★ 閱讀(1041) 評(píng)論(0)  編輯  收藏 所屬分類: java.awt包
          主站蜘蛛池模板: 阿尔山市| 淮北市| 桃园县| 百色市| 康平县| 洞头县| 涿鹿县| 保康县| 隆回县| 八宿县| 梅河口市| 阿图什市| 南京市| 乌审旗| 肇庆市| 开远市| 景泰县| 刚察县| 墨玉县| 万宁市| 南召县| 邵阳县| 安福县| 凤山市| 丽江市| 石门县| 莫力| 重庆市| 白山市| 桂阳县| 准格尔旗| 仲巴县| 敦化市| 钦州市| 沧源| 达拉特旗| 启东市| 商城县| 雅安市| 西充县| 兴文县|