常用佈局管理器

Auci發表於2022-03-20

零基礎學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();
    }
}

輸出結果:

相關文章