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("網格佈局計算器"); //生成對象並設置標題爲 網格佈局計算器
}
}