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

SWT/JFace 入門指南:使用 Layout 管理器實現彈性 UI 佈局

     編輯:Java 相關知識

手動 setBounds() 佈局在視窗縮放、跨平台、國際化場景下維護成本極高。SWT 提供四大佈局管理器,以規則化算法自動安排控件位置大小,實現「寫一次佈局,隨處自適應」。

為什麼需要 Layout?

規則化佈局示例

如圖所示的表單對齊、等寬分佈、響應式換行,若逐行寫座標計算極其繁瑣且易錯。Layout 將「佈局規則」封裝,套用於 Composite(Shell 也是 Composite),所有子控件自動遵循規則排列。

SWT 內建四大 Layout

Layout特點適用場景
FillLayout單行/單列填滿父容器,子控件等分空間單一控件填滿、簡單均分
RowLayout流式排列,超寬自動換行,支援間距、邊距、置中工具列、按鈕組、標籤流
GridLayout網格狀,支援跨行跨列、對齊、權重、最小寬高表單、複雜對齊、響應式介面
FormLayout依附關係佈局(控件邊緣掛鉤到父容器或其他控件)極度精確定位、重疊效果

核心使用模式

// 1. 建立 Layout 實例(可配置參數)
GridLayout layout = new GridLayout();
layout.numColumns = 2;        // 兩欄
layout.makeColumnsEqualWidth = true; // 等寬
layout.marginWidth = 10;      // 邊距

// 2. 套用到 Composite/Shell
shell.setLayout(layout);

// 3. 子控件可選擇性配置 LayoutData 微調
Text text = new Text(shell, SWT.BORDER);
GridData gd = new GridData(SWT.FILL, SWT.CENTER, true, false); // 水平填滿、垂直置中、佔用多餘寬度
text.setLayoutData(gd);

LayoutData:控件級微調關鍵

每個 Layout 對應專屬 LayoutData 子類(GridData, RowData, FormData...),設定於控件而非容器,實現「全域規則 + 個性化例外」的靈活組合。

掌握 Layout,讓介面從「像素級硬編碼」進化為「規則驅動自適應」,是專業 SWT 開發者的必修課。

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