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

Eclipse Forms 編程指南(一):核心概念、HelloWorld 與常用控件實戰

     編輯:Java 相關知識

Eclipse Forms 編程指南(一):核心概念、HelloWorld 與常用控件實戰

Eclipse Forms 是 Eclipse 3.0 引入的 UI 工具包,原為 PDE/Update 內部使用,3.0 起開放為公共 API。它提供**類 Web 表單體驗**的 SWT 介面:可滾動表單、超鏈接、圖片鏈接、表格佈局、扁平化邊框等。本文基於官方指南,實作入門三步驟。

核心組件速覽

  • FormToolkit:統一管理色彩、字體、邊框、超鏈接群組的工廠,**必須 dispose**。
  • Form / ScrolledForm:表單容器,getBody() 返回內容 Composite。
  • FormLayout / TableWrapLayout:類 HTML 表格的彈性佈局管理器。
  • 定制控件:Hyperlink、ImageHyperlink、ExpandableComposite、Section 等。
  • MultiPageEditorPart:每頁一個 Form 的多頁編輯器(如 PDE 插件清單編輯器)。

步驟 1:HelloWorld — 最小 Form 視圖

public class FormView extends ViewPart {
    private FormToolkit toolkit;
    private ScrolledForm form;

    public void createPartControl(Composite parent) {
        toolkit = new FormToolkit(parent.getDisplay());
        form = toolkit.createScrolledForm(parent);
        form.setText("Hello, Eclipse Forms"); // 標題欄文字
    }

    public void setFocus() { form.setFocus(); }

    public void dispose() {
        toolkit.dispose(); // 釋放色彩、字體、圖片資源
        super.dispose();
    }
}

plugin.xml 註冊視圖與依賴:

<requires>
  <import plugin="org.eclipse.ui.forms"/>
</requires>
<extension point="org.eclipse.ui.views">
  <view class="org.xqtu.samples.views.FormView" name="Form Sample" id="FormView"/>
</extension>

步驟 2:添加超鏈接與響應事件


Composite body = form.getBody();
GridLayout layout = new GridLayout();
body.setLayout(layout);

Hyperlink link = toolkit.createHyperlink(body, "Click here.", SWT.WRAP);
link.addHyperlinkListener(new HyperlinkAdapter() {
    public void linkActivated(HyperlinkEvent e) {
        System.out.println("Link activated!");
    }
});

步驟 3:使用 Toolkit 創建通用控件(Label、Text、Button)並實現扁平化邊框


layout.numColumns = 2;
GridData gd = new GridData();
gd.horizontalSpan = 2;
link.setLayoutData(gd);

Label label = toolkit.createLabel(body, "Text field label:");
Text text = toolkit.createText(body, "");
text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
// 關鍵:設置扁平邊框渲染提示
text.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TEXT_BORDER);

Button button = toolkit.createButton(body,
    "An example of a checkbox in a form", SWT.CHECK);
gd = new GridData();
gd.horizontalSpan = 2;
button.setLayoutData(gd);

// 統一重繪邊框,實現扁平化外觀
toolkit.paintBordersFor(body);

關鍵設計模式

模式Forms 體現
工廠模式FormToolkit 集中創建、配置、資源管理
適配器模式HyperlinkAdapter 簡化事件監聽
佈局委託TableWrapLayout 模擬 HTML 表格行列跨越

常見坑點提醒

  • **忘記 toolkit.dispose()** → 色彩/字體/圖片資源洩漏,長期運行導致 UI 異常。
  • 直接用 SWT 原生控件(new Text()) → 外觀與 Forms 風格不一致(3D vs 扁平),事件處理差異。
  • 未調用 paintBordersFor() → Text/Combo 等控件無扁平邊框效果。

下一步學習方向

  1. 掌握 TableWrapLayout 實現複雜響應式佈局(colspan/rowspan)。
  2. 使用 Section、ExpandableComposite 構建可摺疊表單區塊。
  3. 整合 Data Binding (JFace Databinding) 實現模型雙向綁定。
  4. 開發 MultiPageEditorPart 打造專業級多頁編輯器。

「Eclipse Forms 讓 SWT 擁有類 Web 的表單開發體驗,配合 Toolkit 統一風格,是構建豐富 Eclipse RCP 應用的利器。」

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