常用布局管理器

零基礎學Java


  • 常用布局管理器簡介

在Swing中,每個組件在容器中都有一個具體的位置和大小,而在容器中擺放各種組件時很難判斷其具體位置和大小。使用布局管理器比我們直接在容器中控制Swing組件的位置和大小方便得多,可以更加有效地處理整個窗體的布局。Swing提供的常用的布局管理器FlowLayout流布局管理器BorderLayout邊界布局管理器 還有 GridLayout網格布局管理器(這些布局管理器位於 ava.awt 包)。

  • FlowLayout流布局管理器

    流布局管理器(FlowLayout)是最基本的布局管理器,在容器中的布局「流水」一樣從左到右擺放組件

    FlowLayout類中常用的構造方法

    1. public FlowLayout()

    2. public FlowLayout(alignment)

    3. 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網格布局管理器常用的構造方法

  1. public GridLayout(rows , columns)

  2. 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();
    }
}

輸出結果: