首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java GridLayout 完全指南:表格式元件排列與空位處理特性

     編輯:Java 相關知識

GridLayout 核心行為

  • 將容器劃分為 固定行數 × 固定列數 的矩形網格
  • 元件依 加入順序 從左到右、上到下依序填入格子
  • 每個格子大小完全相等,元件被拉伸填滿整個格子
  • 建構子:new GridLayout(rows, cols) 或 new GridLayout(rows, cols, hgap, vgap)

最小範例

//: GridLayout1.java
import java.awt.*;
import java.applet.*;

public class GridLayout1 extends Applet {
    public void init() {
        setLayout(new GridLayout(7, 3)); // 7行 x 3列 = 21格
        for (int i = 0; i < 20; i++)
            add(new Button("Button " + i)); // 只有20個按鈕
    }
} ///:~

關鍵觀察

  • 21 格位置,僅 20 按鈕 → 最後一格留空,無「置中」或「平衡」機制
  • 所有按鈕尺寸相同,由容器大小除以行列數決定
  • 若元件數量超過行×列,會自動增加行數 (若 cols 固定) 或列數 (若 rows 固定) 容納
  • rows=0 或 cols=0 表示「不限制該維度」,由另一維度與元件數量推算

進階特性

間距控制

new GridLayout(4, 3, 10, 5); // 水平間距 10px, 垂直間距 5px

動態行列計算

建構參數行為
new GridLayout(3, 0)固定 3 行,列數自動計算
new GridLayout(0, 4)固定 4 列,行數自動計算
new GridLayout(0, 0)非法,拋出異常

適用場景 vs 不適用場景

適用不適用
計算機鍵盤、電話按鍵盤表單欄位對齊 (標籤寬度不一)
圖示網格、縮圖牆需要元件保持原始大小
等寬按鈕工具列需要彈性空白壓縮/展開
簡單矩陣輸入介面複雜對齊需求 (改用 GridBagLayout/MigLayout/JavaFX GridPane)

現代化對應

  • Swing:GridLayout 相容,常搭配 JPanel 巢狀使用
  • JavaFX:GridPane 提供更強大功能:
    • 可設定列/行約束 (ColumnConstraints 百分比/最小/最大/填滿)
    • 支援元件跨行/跨列 (GridPane.setColumnSpan(node, 2))
    • 可混合固定/計算/百分比寬度
  • Web CSS:display: grid / grid-template-columns: repeat(3, 1fr) 同樣概念但功能遠超 GridLayout

避坑指南

  1. 不要期望元件保持 preferredSize,GridLayout 強制拉伸填滿格子。
  2. 不要用於「標籤+輸入框」表單:標籤會被拉寬至與輸入框同寬,視覺失衡。
  3. 容器尺寸改變時,所有格子同步縮放,可能導致文字截斷,配合 setMinimumSize 緩解。

總結

GridLayout 是「等分網格」的純粹實現:簡單、高效、無彈性。適用於視覺上要求整齊劃一的介面區塊。複雜對齊需求請升級至 GridBagLayout/MigLayout/GridPane/CSS Grid。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved