常用布局管理器
零基礎學Java
-
常用布局管理器簡介
在Swing中,每個組件在容器中都有一個具體的位置和大小,而在容器中擺放各種組件時很難判斷其具體位置和大小。使用布局管理器比我們直接在容器中控制Swing組件的位置和大小方便得多,可以更加有效地處理整個窗體的布局。Swing提供的常用的布局管理器有 FlowLayout流布局管理器 和 BorderLayout邊界布局管理器 還有 GridLayout網格布局管理器(這些布局管理器位於 ava.awt 包)。
-
FlowLayout流布局管理器
流布局管理器(FlowLayout)是最基本的布局管理器,在容器中的布局像「流水」一樣從左到右擺放組件。
FlowLayout類中常用的構造方法
-
public FlowLayout()
-
public FlowLayout(alignment)
-
public FlowLayout(alignment , hgap , vgap)
(PS:alignment參數為每一行具體擺放位置。hgap參數為水平間距。vgap參數為垂直間距。)
-
實例
import javax.swing.*;
import java.awt.*;
public class Demo2 extends JFrame {
public Demo2(){
setBounds(100,100,300,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c = getContentPane();
/**
* LEFT :左對齊
* RIGHT :右對齊
*/
c.setLayout(new FlowLayout(FlowLayout.RIGHT,20,20));//給容器設置流布局 為右對齊、水平間距20、垂直間距20
for (int i = 0 ;i < 10 ;i++){
c.add(new JButton("按鈕" + i));//循環添加按鈕組件
}
setVisible(true);
}
public static void main(String[] args) {
new Demo2();
}
}
輸出結果:
-
BorderLayout邊界布局管理器
創建完窗體後,在默認不指定窗體布局的情況下,Swing組件的布局模式是邊界(BorderLayout)
布局,邊界布局管理器可以將容器劃分為東、南、西、北、中 5個區域。在**調用 **Container類 的
add0方法 向容器中添加組件時,可以設置此組件在邊界布局管理器中的區域,區域的控制可以由
BorderLayout類中 的成員變量來決定。
add()方法添加BorderLayout組件
語法:
add(comp , constraints); //comp:要添加的組件; //constraints:組件的布局約束對象(BorderLayout類中的成員變量);
實例
import javax.swing.*;
import java.awt.*;
public class Demo3 extends JFrame {
public Demo3(){
setBounds(100,100,350,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new BorderLayout());//設置為邊界布局
JButton b1 = new JButton("中"),
b2 = new JButton("東"),
b3 = new JButton("西"),
b4 = new JButton("南"),
b5 = new JButton("北");
c.add(b1,BorderLayout.CENTER);//添加按鈕到 中部
c.add(b2,BorderLayout.EAST);//添加按鈕到 東部
c.add(b3,BorderLayout.WEST);//添加按鈕到 西部
c.add(b4,BorderLayout.SOUTH);//添加按鈕到 南部
c.add(b5,BorderLayout.NORTH);//添加按鈕到 北部
c.add(new JButton("覆蓋"),BorderLayout.EAST);//新組件覆蓋舊組件
setVisible(true);
}
public static void main(String[] args) {
new Demo3();
}
}
輸出結果:
-
GridLayout網格布局管理器
網格布局管理器(GridLayout)是將容器劃分為網格。組件可以按行和列進行排列。在網格布局管理器中,每一個組件的大小都相同,並且網格的個數由網格的行數和列數決定。組件從網格的左上角開始,按照從左到右、從上到下的順序加入到網格中,而且每一個組件都會填滿整個網格,改變窗體的大小,組件的太小也會隨之改變。
GridLayout網格布局管理器常用的構造方法
-
public GridLayout(rows , columns)
-
public GridLayout(rows , columns , horizGap , vertGap)
(PS:rows表示行;columns表示列; horizGap表示水平間距; vertGap表示垂直間距;)
實例
import javax.swing.*;
import java.awt.*;
public class Demo4 extends JFrame {
public Demo4(){
setBounds(100,100,300,300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new GridLayout(7,3,5,5));//設置為網格布局(GridLayout)7行,3列,水平間距5像素,垂直間距5像素
for (int i=0;i<20;i++){
c.add(new JButton("按鈕"+i));
}
setVisible(true);
}
public static void main(String[] args) {
new Demo4();
}
}