十八、java-GUI之網格佈局(GridLayout)

GridLayout(網格佈局)

1、GridLayout佈局特徵

網格佈局特點:

1. 使容器中的各組件呈M行×N列網格狀分佈

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

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

3. 各組件的排列方式爲:從上到下,從左到右。

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

4. 設置行數和列數時,行數或者列數可以有一個爲零。(即不限)

若rows爲0,cols爲3,則列固定爲3,行不限,每行只能放3個

若cols爲0,rows爲3,則行固定爲3,列不限,每行必定有控件

5. 至於其他規則,很明顯啦。

假設你有13個控件,你又設置了三行,一行五個,你覺得第三行應該有多少個?

並且如果組件數量超過設定的個數,佈局管理器會自動增加網格個數,原則是保持行數不變。就是

假設還是13個控件,你設置了兩行,一行五個,放不下系統就給加了行,第三行放多出來的三個)

2、網格佈局GridLayout類的常用構造函數和方法

構造方法摘要

GridLayout()

默認值的網格佈局,組件一行一列。

GridLayout

(int rows, int cols)

具有指定行列的網格佈局。

Rows爲行數,cols爲列數。

GridLayout

(int rows,int cols,

int hgap,int vgap)

指定行數、列數,

並指定組件水平、縱向間距。

 

方法摘要

int getRows()

獲取此佈局中的行數。

int getColumns()

獲取此佈局中的列數。

int getHgap()

獲取組件之間的水平間距。

int getVgap()

獲取組件之間的垂直間距。

void setRows(int rows)

將此佈局中的行數設置爲指定值。

void setColumns(int cols)

將此佈局中的列數設置爲指定值。

void setHgap(int hgap)

將組件之間的水平間距設置爲指定值。

void setVgap(int vgap)

將組件之間的垂直間距設置爲指定值。

void removeLayoutComponent

(Component comp)

從佈局移除指定組件。

String toString()

返回此網格佈局的值的字符串表示形式。

3、網格佈局實例

實例://GridLayoutDemo.Java

package gridlayoutdemo;

import java.awt.*;

import javax.swing.*;

 

class GridFrame extends JFrame{

    //定義文本框

    JTextArea  t = new  JTextArea(); 

    //定義面板,並設置爲網格佈局,5行4列,組件水平、垂直間距均爲3,計算器按鈕在面板內

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

    //定義字符串數組,爲按鈕的顯示文本賦值,注意字符元素的順序與循環添加按鈕保持一致

    String  str[]={"()","π","←","+","7","8","9","-","4","5","6","*","1","2","3","/","C","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] );

           btn[i].setFont(new Font ( "微軟雅黑" , Font.PLAIN , 22));//設置按鈕字體

           p.add(btn[i]);

         }

       

         //將文本框放置在窗體NORTH位置

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

         //將面板放置在窗體CENTER位置

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

        

        setSize(250,200);   //設置大小

        setLocationRelativeTo(null);   //讓窗體居中顯示

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setVisible(true);  //設置顯示

         }

    public static void main (String[] args){

       GridFrame  gl = new GridFrame("網格佈局計算器");   //生成對象並設置標題爲 網格佈局計算器

    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章