Java圖形化介面設計——布局管理器之GridLayout(網格布局)

來源:互聯網
上載者:User

標籤:center   lan   介面   jframe   方法   dem   注意   高度   顯示   

 

         網格布局特點:

l  使容器中的各組件呈M行×N列的網格狀分布。

l  網格每列寬度相同,等於容器的寬度除以網格的列數。

l  網格每行高度相同,等於容器的高度除以網格的行數。

l  各組件的相片順序為:從上到下,從左至右。

l  組件放入容器的次序決定了它在容器中的位置。

l  容器大小改變時,組件的相對位置不變,大小會改變。

l  設定網格布局行數和列數時,行數或者列數可以有一個為零。若rows為0,cols為3,則列數固定為3,行數不限,每行只能放3個控制項或容器。若cols為0,rows為3,則行數固定為3,列數不限,且每行必定有控制項,若組件個數不能整除行數,則除去最後一行外的所有行組件個數為:Math.ceil(組件個數/rows)。

Math.ceil(double x):傳回不小於x的最小整數值。比如行數為3,組件數為13個,則Math.ceil(13/3)=5,即第一行,第二行組件數各為5個,剩下的組件放在最後一行。

l  若組件數超過網格設定的個數,則布局管理器會自動增加網格個數,原則是保持行數不變。

 

 

構造方法摘要

GridLayout(): 建立具有預設值的網格布局,即每個組件佔據一行一列。

GridLayout(int rows, int cols) :

建立具有指定行數和列數的網格布局。Rows為行數,cols為列數。

GridLayout(int rows, int cols, int hgap, int vgap) :

建立具有指定行數、列數以及組件水平、縱向一定間距的網格布局。

 

 

 

方法摘要

int

getColumns()  :擷取此布局中的列數。

int

getHgap():擷取組件之間的水平間距。

int

getRows() :擷取此布局中的行數。

int

getVgap()  :擷取組件之間的垂直間距。

void

removeLayoutComponent(Component comp) :從布局移除指定組件。

void

setColumns(int cols)  :將此布局中的列數設定為指定值。

void

setHgap(int hgap):將組件之間的水平間距設定為指定值。

void

setRows(int rows):將此布局中的行數設定為指定值。

void

setVgap(int vgap) :將組件之間的垂直間距設定為指定值。

String

toString():返回此網格布局的值的字串表示形式。

 

執行個體一:

//GridLayoutDemo.Java

import javax.swing.*;

import java.awt.*;

public class GridLayoutDemo extends JFrame {

  public GridLayoutDemo() {

     setLayout(new GridLayout(0,2));           //設定為網格布局,未指定行數

     setFont(new Font("Helvetica", Font.PLAIN, 14));

     getContentPane().add(new JButton("Button 1"));

     getContentPane().add(new JButton("Button 2"));

     getContentPane().add(new JButton("Button 3"));

     getContentPane().add(new JButton("Button 4"));

     getContentPane().add(new JButton("Button 5"));

  }

  public static void main(String args[]) {

    GridLayoutDemo f = new GridLayoutDemo();

    f.setTitle("GridWindow Application");

    f.pack();

    f.setVisible(true);

         f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

         f.setLocationRelativeTo(null);           //讓表單置中顯示

  }

}

 

程式結果如所示:

 

 

 

 

執行個體二:布局一個簡單的計算機

思路:對表單應用邊界布局,在NORTH上放置一個文字框,在CENTER上放置一個面板,面板上放置計算機的相應按鈕

//GridFrame.Java

import java.awt.*;

import javax.swing.*;

class GridFrame extends JFrame{

         //定義面板,並設定為網格布局,4行4列,組件水平、垂直間距均為3

          JPanel p=new JPanel(new GridLayout(4,4,3,3));

          JTextArea t=new JTextArea();        //定義文字框

          //定義字串數組,為按鈕的顯示文本賦值

         //注意字元元素的順序與迴圈添加按鈕保持一致

          String str[]={"7","8","9","/","4","5","6","*","1","2","3","-","0",".","=","+"};

     public GridFrame(String s){

                   super(s);  //為表單名稱賦值

        setLayout(new BorderLayout());     //定義表單布局為邊界布局

        JButton btn[];                             //聲明按鈕數組

        btn=new JButton[str.length];     //建立按鈕數組

                   //迴圈定義按鈕,並添加到面板中

        for(int i=0;i<str.length;i++){

               btn[i]=new JButton(str[i]);

               p.add(btn[i]);

         }

                    //將文字框放置在表單NORTH位置

            getContentPane().add(t,BorderLayout.NORTH);     

            //將面板放置在表單CENTER位置

            getContentPane().add(p,BorderLayout.CENTER);   

            setVisible(true);

            setSize(250,200);

            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            setLocationRelativeTo(null);               //讓表單置中顯示

        }

      public static void main(String[] args){

         GridFrame gl=new GridFrame("網格布局電腦!");

         }

 

程式執行結果如:

 

 

                  注意:這裡一定要體會通過字串數組和迴圈添加按鈕的方法,以後添加菜單以及事件處理均採用這種方法,這種方法的好處在於,如果需要修改按鈕順序,直接修改字串就可以了。而不需要改動添加按鈕的代碼。

Java圖形化介面設計——布局管理器之GridLayout(網格布局)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.