GridBagLayout布局實現簡單電子郵件發送介面,gridbaglayout布局

來源:互聯網
上載者:User

GridBagLayout布局實現簡單電子郵件發送介面,gridbaglayout布局

              網格塊布局(GridBagLayout)在JAVA中是使用最為複雜,功能最強大的一種,它是在GridLayout的基礎上發展而來。該布局也是將整個容器分成若干行,列組成的單元,但各行可以有不同的高度,每欄也可以有不同的寬度,一個組件可以佔用一個,也可以佔用多個單元格。

             GridBagLayout在布置組件時需要許多資訊來描述一個組件要放的位置,大小,伸縮性等。為此,在該布局中的組件加入時,要指定一個約束對(GridBagConstraints),

其中封裝了與位置,大小等有關的約束資料。具體命令格式為:add(組件,約束對象);

            約束對象常用屬性如下:

             Ⅰ:規定位置屬性:一般通過gridx,gridy規定布局佔用單元格的位置,最左上方為0,0. 也可以用方向位置參數控制組件的位置,類似於BorderLayout布局,這裡的方向位置參數包括:CENTER , EAST , NORTH, NORTHEAST,SOUTH, SOUTHWEST,WEST.

             Ⅱ: gridheight, gridwidth:組件佔用單元格的個數。在規定組件的位置和高,寬時,也可也用兩個常量:如果gridwidth值為RELATIVE,表示該組件相對前一個組件佔下一個位置;如果gridwidth值為REMAINDER,則表示組件本欄中佔用所有剩餘的單元格,如果是在一行的最後一個單元格的gridwidth使用了REMAINDER,則下一行要將gridwidth值改為1;否則,下一行的第一個組件將佔滿整行。

             Ⅲ:rowHeights,columnWidth:指定行高,欄寬。預設情況下行和寬的大小分別由最高和最寬的組件決定。

             Ⅳ:weightx,weighty:控制單元格的行和寬的伸展,在一行和一列中最多隻能有一個組件指定伸展參數,伸展可保證表單大小變化時組件的大小也作相應的調整。

             Ⅴ :填充(fill)屬性:規定組件填充網格的方式。常量包括BOTH,HORIZONTAL,VERTICAL和NONE,其中BOTH代表水平和垂直兩個方式伸展,也就是佔滿整個單元格;而NONE代表組件不伸展,保持原來大小。

             貼上代碼:

            

import java.awt.*;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class GridBagLayoutExample extends Frame { private static final long serialVersionUID = 1L;public GridBagLayoutExample(){super("GB記憶編程");           Label receiveLabel=new Label("收件者:");           Label ccLabel=new Label("抄送:");           Label subjectLabel=new Label("主題");           TextField receiveField=new TextField();  //收件者;           TextField ccField=new TextField();     //抄送;           TextField subjectField= new TextField();  //主題;           TextArea mailArea=new TextArea(8,40);   //輸入郵件文字地區;           setLayout(new GridBagLayout());           GridBagConstraints gridBag=new GridBagConstraints();                      gridBag.fill=GridBagConstraints.HORIZONTAL;   //以水平方式填充;           gridBag.weightx=0;   //行長不變           gridBag.weighty=0;  //行高不變           addToBag(receiveLabel,gridBag,0,0,1,1);   //收信人標籤;           addToBag(ccLabel,gridBag,0,1,1,1);       //抄送人標籤;           addToBag(subjectLabel,gridBag,0,2,1,1);   //主題標籤位置           gridBag.weightx=100;                            //行自適應縮放           gridBag.weighty=0;                           //行高不變           addToBag(receiveField,gridBag,1,0,2,1);           addToBag(ccField,gridBag,1,1,2,1);           addToBag(subjectField,gridBag,1,2,2,1);           gridBag.fill=GridBagConstraints.BOTH;  //採用全填充方式布局;           gridBag.weightx=100;             //   行自適應縮放           gridBag.weighty=100;              //列自適應縮放;           addToBag(mailArea,gridBag,0,4,3,1);   //佔3欄一行           addWindowListener(new WindowAdapter(){                            public void windowClosing(WindowEvent e){           dispose();           }           });           setSize(300,300);           setVisible(true);                      }           /*將一個組件按指定大小加入到GridBagLayout布局的指定位置*/         void  addToBag(Component  c, GridBagConstraints  gdc,int x,int y,int w,int h){         gdc.gridx=x;         gdc.gridy=y;         gdc.gridheight=h;         gdc.gridwidth=w;         add(c,gdc);                   //按指定約束加入組件;         }public static void main(String[] args) {   new GridBagLayoutExample();}}
                

               如果本篇對您有協助,請點擊關注GB記憶部落格按鈕。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.