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

Eclipse RCP 整合富文本編輯器:EKIT 與 Web-based 方案實戰對比

     編輯:Java 相關知識

在 Eclipse RCP 應用開發中,富文本編輯是常見且棘手的需求。SWT/JFace 原生 Text 控件功能極其有限,無法滿足公文正文等複雜排版場景。本文分享兩種經實戰驗證的整合方案。

方案一:EKIT + SWT_AWT 橋接器

實作架構

SWT Composite → SWT_AWT Bridge → AWT Frame → EKIT Editor

將 EKIT 封裝為可複用的 SWT 控件,透過 SWT_AWT.new_Frame() 實現 SWT 與 AWT 組件共存。

優勢

  • 純 Java 實現,無瀏覽器依賴,離線環境可用
  • 功能完整:字體、段落、表格、圖片、列表等排版功能齊全
  • 開源免費,原始碼可控,便於二次開發

痛點與對策

問題影響解決方案
不支援 OLE 拖放貼上 Word/Excel 內容貼上會遺失格式 自行實現 TransferHandler,解析 RTF/HTML 片段
AWT/SWT 事件循環衝突 偶發焦點丟失、鍵盤快捷鍵失效 統一使用 Display.asyncExec() 處理跨線程 UI 操作
列印/匯出 PDF 支援弱 需額外引入 iText 或 Apache PDFBox 整合 Flying Saucer (xhtmlrenderer) 實現 CSS 2.1 列印排版

方案二:Web-based 編輯器 + Browser 控件

技術棧選擇

  • 編輯器核心:CKEditor 4/5、TinyMCE 5/6、Quill.js
  • SWT 容器:org.eclipse.swt.browser.Browser(WebKit/Edge/WebView2 後端)
  • 通訊機制:Browser.evaluate() + JavascriptFunction 雙向呼叫

核心整合代碼片段

// SWT 端
Browser browser = new Browser(parent, SWT.NONE);
browser.setUrl("platform:/plugin/com.example.editor/editor.html");

// 註冊 Java → JS 呼叫
browser.setJavascriptEnabled(true);

// 註冊 JS → Java 回調
browser.addFunction("saveContent", new Function() {
    @Override
    public Object execute(Function func, Object[] args) {
        String html = (String) args[0];
        // 持久化至資料庫或檔案
        documentService.saveContent(html);
        return null;
    }
});
// editor.html 關鍵 JS
const editor = ClassicEditor.create(document.querySelector('#editor'))
    .then(editor => {
        window.editorInstance = editor;
    });

function getContent() {
    return window.editorInstance.getData();
}

// 定時或按需推送給 Java
setInterval(() => {
    if (window.saveContent) window.saveContent(getContent());
}, 30000);

優勢

  • 原生支援 Word/Excel OLE 內容貼上,格式保真度極高
  • 前端生態豐富:插件、主題、協同編輯、提及用戶等開箱即用
  • 跨平台一致性佳,避免 SWT 原生渲染差異

注意事項

  • 離線部署:需將編輯器所有靜態資源打包進 Plugin,配置 platform:/plugin/ 協議載入
  • 安全性:啟用 CSP 政策,限制 evaluate() 注入風險
  • 效能:大文檔(>500KB)建議啟用虛擬滾動或分頁編輯

方案選型決策樹

  1. 需完全離線、無瀏覽器運行環境 → 選 EKIT
  2. 需完美支援 Office 內容貼上、團隊有前端能力 → 選 Web-based
  3. 需嵌入現有 RCP 表單、資料綁定複雜 → 傾向 EKIT(原生 SWT 整合更順暢)
  4. 長期規劃遷移至 Web/Eclipse Theia → 選 Web-based(技術棧複用度高)

系統富文本編輯器實際運行截圖

實務上,我們在 OA 系統採用「雙軌制」:公文正文用 CKEditor 保證貼上體驗;簡易備註欄用輕量級 EKIT 控件減少資源佔用。根據業務場景靈活組合,而非單一技術強推全場景。

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