public void createPartControl(Composite parent) { toolkit = new FormToolkit(parent.getDisplay()); form = toolkit.createForm(parent); form.setText("Hello, Eclipse Forms"); GridLayout layout = new GridLayout(); form.getBody().setLayout(layout); Hyperlink link = toolkit.createHyperlink(form.getBody(), "Click here.", SWT.WRAP); link.addHyperlinkListener(new HyperlinkAdapter() { public void linkActivated(HyperlinkEvent e) { System.out. form的body是標題下面的可用空間,因為這個空間是一個SWT Composite,它能做為其它組件的parent。在上面的代碼里,我們為body設置了layout,然后創建了一個超鏈接。超鏈接是由Eclipse Forms提供的為數不多的組件之一,我們可以為超鏈接增加監聽器,這樣能夠在用戶點擊它時做出反應。
升級后的視圖應該看起來象這樣:
圖3:一個有超鏈接的簡單form.
超鏈接組(Hyperlink Groups)
Form tookit有一個"超鏈接組"對象.每個創建出的超鏈接都加入這個組對象中.超鏈接為多個角色服務.它們定義了這個組中所有超鏈接在正常、hover、激活不同狀態下的顏色.它們根據小組中鏈接不同的狀態來改變顏色.它們根據小組中鏈接不同的狀態來改變下劃線風格.
當你要改變超鏈接組對象的默認設置時,可以通過toolkit的getHyperlinkGroup()方法來獲得超鏈接組對象.
創建普通組件
Eclipse Forms的一個設計目標就是讓能夠在編輯器/視圖中創建普通SWT組件.因為form的body是一個普通composite,你能夠在它里面使用任何layout和組件.但是,記住"原生的"SWT組件有一個組件背景.我們現在通過它們的構造方法創建一些組件.layout.numColumns = 2; GridData gd = new GridData(); gd.horizontalSpan = 2; link.setLayoutData(gd); Label label = new Label(form.getBody(), SWT.NULL); label.setText("Text field label:"); Text text = new Text(form.getBody(), SWT.BORDER); text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); Button button = new Button(form.getBody(), SWT.CHECK); button.setText("An example of a checkbox in a form"); gd = new GridData(); gd.horizontalSpan = 2; button.setLayoutData(gd);現在我們使用了兩列,并且創建了一個標簽(label),一個文本框(text field)和一個復選框(checkbox).結果如下:
圖4:一個擁有直接用它們的構造器創建出的SWT組件的form
這張圖片怎么回事?我們創建的組件的背景直接和系統窗口背景相匹配,而不是和form的背景匹配.另外,文本框看起來還好是因為這張截圖是在Windows xp下截的.在其它操作系統上,它會看起來是有一個3D邊框的空白條.為了解決這個問題,我們會用toolkit的工廠方法來創建這些組件:Label label = toolkit.createLabel(form.getBody(), "Text field label:");
新聞熱點
疑難解答