【從零開始學 Java 程式設計】佈局管理器 - BoxLayout

【從零開始學 Java 程式設計】 線上教學課程目錄,使用 Java 程式語言,開發應用程式。

BoxLayout

BoxLayout 盒子佈局比 FlowLayout 更強大。可以說是 FlowLayout 的加強版,所以在選擇佈局管理器時,可以直接選擇 BoxLayout。
BoxLayout(Container c,int axis)
其中 Container 為你想設定哪一個容器採用 BoxLayout,另外一個 axis 有 BoxLayout.Y_AXIS 和 BoxLayout.X_AXIS。
BoxLayout.Y_AXIS: 垂直排列,由上至下。
BoxLayout.X_AXIS: 水平排列,由左至右。

設定對齊方式


第一張圖,採用 Component.LEFT_ALIGNMENT: 靠左對齊
第二張圖,採用 Component.CENTER_ALIGNMENT: 置中對齊
第三張圖,採用 Component.RIGHT_ALIGNMENT: 靠右對齊

Box 容器

createHorizontalBox : 建立一個水平排列,由左至右的容器
createVerticalBox: 建立一個垂直排列,由上至下的容器
//建立一個水平排列的容器
Box b1=Box.createHorizontalBox(); 

//建立一個垂直排列的容器
Box b2=Box.createVerticalBox();

完整程式碼

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

public class DemoBoxLayout {

    public void addComponentsToPane(Container pane) {

        //設定採用 BoxLayout
        pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS));

        addAButton("Button 1", pane);
        addAButton("Button 2", pane);
        addAButton("Button 3", pane);
        addAButton("Long-Named Button 4", pane);
        addAButton("5", pane);
    }

    private void addAButton(String text, Container container) {
        JButton button = new JButton(text);
        button.setAlignmentX(Component.CENTER_ALIGNMENT);
        container.add(button);
    }

    private DemoBoxLayout() {

        JFrame frame = new JFrame("HKT線上教室 - DemoBoxLayout");
        // 獲取螢幕解析度
        Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
        // 設定視窗大小佔螢幕四分之一
        frame.setSize(dimension.width / 2, dimension.height / 2);

        //設定視窗顯示在螢幕畫面中間位置
        int x = (int) ((dimension.getWidth() - frame.getWidth()) / 2);
        int y = (int) ((dimension.getHeight() - frame.getHeight()) / 2);
        frame.setLocation(x, y);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設定關閉可以關掉程式
        //在 Pane 畫面中加入元件
        addComponentsToPane(frame.getContentPane());
//        frame.pack();
        frame.setVisible(true);
    }

    //最一開始程式進入點
    public static void main(String[] args) {
        //使用 invokeLater 確保 UI 在排程執行緒內
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new DemoBoxLayout();
            }
        });
    }
}

執行畫面

參考資料


那這次的課程就介紹到這邊囉~
順帶一提,KT 線上教室,臉書粉絲團,會不定期發佈相關資訊,不想錯過最新資訊,不要忘記來按讚,加追蹤喔!也歡迎大家將這套課程分享給更多人喔。
我們下次再見囉!!!掰掰~

這個網誌中的熱門文章

2023 最新入門零基礎 Kotlin教學【從零開始學 Kotlin 程式設計】Kotlin 教學課程目錄 (Android Kotlin, IntelliJ IDEA, Android Studio, Android APP 開發教學)

nano 文字編輯器

16天記下7000單字

最新入門零基礎 Java 教學【從零開始學 Java 程式設計】Java教學課程目錄 (IntelliJ IDEA 開發教學)

Android Studio 歷代版本下載點