RCP開發中UI布局代碼繁瑣,可視化編輯器能大幅提效。本文實測對比官方VE與商業SWT-Designer,揭露VE不可用真相,提供SWT-Designer免費版破解限制的實戰技巧,並給出代碼結構規範使其可被設計器識別。
https://update.soyatec.org/Ganymede/ve/1.4)在Eclipse 3.4+上編輯ViewPart直接報錯Instantiations.license可重置(非長久之計)關鍵:繼承org.eclipse.swt.widgets.Dialog(非JFace Dialog),提供標準構造器,open()內創建Shell並運行事件循環。
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Shell;
public class LoginDialog extends Dialog {
protected Shell shell;
private int result;
public LoginDialog(Shell parent, int style) { super(parent, style); }
public LoginDialog(Shell parent) { super(parent); }
public int open() {
createContents();
// 模態對話框事件循環
Display display = getParent().getDisplay();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
return result;
}
protected void createContents() {
shell = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
// 此處可用設計器拖拽控件、設置布局
}
}

所有控件面板可用,屬性表可編輯,屬性綁定、事件綁定全支持。

| 方案 | 狀態 | 備註 |
|---|---|---|
| Eclipse WindowBuilder | Google捐贈至Eclipse基金會,整合進官方 | 免費開源,支持SWT/Swing/JavaFX,持續維護中 |
| Eclipse e4 CSS佈局 | 聲明式UI,減少可視化編輯需求 | 學習曲線較陡 |
| 手寫代碼+Preview視圖 | 輕量級即時預覽插件 | 適合熟練開發者 |