JavaGUI - [04] BoxLayout

HOUHUILIN發表於2024-05-06

題記部分

一、簡介

  為了簡化開發,Swing引入了一個新的佈局管理器:BoxLayout。BoxLayout可以在垂直和水平兩個方向上擺放GUI元件,BoxLayout提供瞭如下一個簡單的構造器:

BoxLayout(Container target,int axis)

  指定建立基於target容器的BoxLayout佈局管理器,該佈局管理器裡的元件按axis方向排列。其中axis有BoxLayout.X_AXIS(橫向)和BoxLayout.Y_AXIS(縱向)兩個方向。

案例一

JavaGUI - [04] BoxLayout

垂直方向排列元件

package com.harley.layout;

import javax.swing.*;
import java.awt.*;

/**
 * @author harley
 * @date 2024/05/06 15:15
 */
public class s09_BoxLayoutDemo {
    public static void main(String[] args) {
        Frame frame = new Frame("BoxLayoutDemo");

        // 1. 基於frame容器,建立一個BoxLayout物件
        BoxLayout boxLayout = new BoxLayout(frame, BoxLayout.Y_AXIS);
        // 2. 把BoxLayout物件設定給frame
        frame.setLayout(boxLayout);
        // 4. 往frame中新增兩個按鈕元件
        frame.add(new Button("按鈕1"));
        frame.add(new Button("按鈕2"));

        frame.pack();
        frame.setVisible(true);
    }
}

案例二

  在java.swing包中,提供了一個新的容器Box,該容器的預設佈局管理器就是BoxLayout,大多數情況下,shiyongBox容器去容納多個GUI元件,然後再把Box容器作為一個元件,新增到其他的容器中,從而形成整體視窗布局。

static Box createHorizontalBox():建立一個水平排列的Box容器

static Box createVerticalBox():建立一個垂直排列的Box容器

JavaGUI - [04] BoxLayout

程式碼

package com.harley.layout;

import javax.swing.*;
import java.awt.*;

/**
 * @author harley
 * @date 2024/05/06 15:25
 */
public class s10_BoxLayoutDemo2 {
    public static void main(String[] args) {
        // 1.建立Frame物件
        Frame frame = new Frame("BoxLayout");

        // 2. 建立一個水平排列的容器
        Box hBox = Box.createHorizontalBox();
        // 3. 往當前容器中新增兩個按鈕
        hBox.add(new Button("水平按鈕1"));
        hBox.add(new Button("水平按鈕2"));
        // 4. 建立一個垂直排列的容器
        Box vBox = Box.createVerticalBox();
        // 5. 往當前容器中新增兩個按鈕
        vBox.add(new Button("垂直按鈕1"));
        vBox.add(new Button("垂直按鈕2"));

        // 6. 把兩個Box容器新增到Frame中展示
        frame.add(hBox, BorderLayout.NORTH);
        frame.add(vBox);

        frame.pack();
        frame.setVisible(true);

    }
}

二、進階

被BoxLayout管理的容器中的元件之間是沒有間隔的,如何給元件設定間距?

static Component createHorizontalGlue()建立一條水平Glue(可在兩個方向上同時拉伸的間距)

static Component createVerticalGlue()建立一條垂直Glue(可在兩個方向上同時拉伸的間距)

static Component createHorizontalStrut(int width)

建立一條指定寬度(寬度固定,無法拉伸)的水平Strut(可在垂直方向上拉伸的間距)

static Component createVerticalStrut(int height)

建立一條指定高度(高度固定,無法拉伸)的垂直Strut(可在水平方向上拉伸的間距)

案例三

三、標題

— 要養成終身學習的習慣 —