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

          因為口渴,上帝創造了水;
          因為黑暗,上帝創造了火;
          因為我需要朋友,所以上帝讓你來到我身邊
          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認證

          linux經典

          OA系統

          Spring在線

          Structs在線

          專家專欄

          企業信息化

          大型設備共享系統

          工作流

          工作流產品

          網上購書

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          1.4 LayoutManager 布局管理器(1)

            java為了實現跨平臺的特性并且獲得動態的布局效果,java將容器內的所有組件安排給一個"布局管理器"負責管理,如:排列順序,組件的大小、位置,當窗口移動或調整大小后組件如何變化等功能授權給對應的容器布局管理器來管理,不同的布局管理器使用不同算法和策略,容器可以通過選擇不同的布局管理器來決定布局。

            布局管理器主要包括: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());//設置布局管理器為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();//緊湊排列,其作用相當于setSize(),即讓窗口盡量小,小到剛剛能夠包容住b1、b2兩個按鈕
          18   f.setVisible(true);
          19  }
          20 }
          21 

          運行結果如下:

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

            FlowLayout();
            //缺省的對齊方式居中對齊,橫向間隔和縱向間隔都是缺省值5個象素
          例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 }

          運行結果如下:

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

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

              
          例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"));//第一個參數表示把按鈕添加到容器的North區域
           7   f.add("South"new Button("South"));//第一個參數表示把按鈕添加到容器的South區域
           8   f.add("East"new Button("East"));//第一個參數表示把按鈕添加到容器的East區域
           9   f.add("West"new Button("West"));//第一個參數表示把按鈕添加到容器的West區域
          10   f.add("Center"new Button("Center"));//第一個參數表示把按鈕添加到容器的Center區域
          11   f.setSize(200,200);
          12   f.setVisible(true); 
          13  }
          14 }

          運行結果如下:

          在使用BorderLayout的時候,如果容器的大小發生變化,其變化規律為:組件的相對位置不變,大小發生變化。例如容器變高了,則North、South區域不變,West、Center、East區域變高;如果容器變寬了,West、East區域不變,North、Center、South區域變寬。不一定所有的區域都有組件,如果四周的區域(West、East、North、South區域)沒有組件,則由Center區域去補充,但是如果Center區域沒有組件,則保持空白,其效果如下幾幅圖所示:

            
                 North區域缺少組        
            
                North和Center區域缺少組件

          3. GridLayout
            使容器中各個組件呈網格狀布局,平均占據容器的空間。

           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 }

          運行結果如下:

          posted on 2006-01-21 22:23 ★yesjoy★ 閱讀(1039) 評論(0)  編輯  收藏 所屬分類: java.awt包
          主站蜘蛛池模板: 革吉县| 安庆市| 璧山县| 务川| 商都县| 利津县| 大宁县| 镶黄旗| 梁山县| 江安县| 株洲县| 迁西县| 大宁县| 南阳市| 顺昌县| 惠来县| 高陵县| 弥渡县| 望城县| 义乌市| 扶沟县| 兰西县| 卓尼县| 那曲县| 崇仁县| 祁门县| 工布江达县| 大邑县| 淄博市| 新和县| 陆丰市| 正镶白旗| 韶山市| 任丘市| 昭平县| 绥阳县| 措勤县| 家居| 东光县| 永安市| 临清市|