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。在上面的代碼里,我們?yōu)閎ody設(shè)置了layout,然后創(chuàng)建了一個超鏈接。超鏈接是由Eclipse Forms提供的為數(shù)不多的組件之一,我們可以為超鏈接增加監(jiān)聽器,這樣能夠在用戶點擊它時做出反應(yīng)。
升級后的視圖應(yīng)該看起來象這樣:

圖3:一個有超鏈接的簡單form.
超鏈接組(Hyperlink Groups)
Form tookit有一個"超鏈接組"對象.每個創(chuàng)建出的超鏈接都加入這個組對象中.超鏈接為多個角色服務(wù).它們定義了這個組中所有超鏈接在正常、hover、激活不同狀態(tài)下的顏色.它們根據(jù)小組中鏈接不同的狀態(tài)來改變顏色.它們根據(jù)小組中鏈接不同的狀態(tài)來改變下劃線風格.
當你要改變超鏈接組對象的默認設(shè)置時,可以通過toolkit的getHyperlinkGroup()方法來獲得超鏈接組對象.
創(chuàng)建普通組件
Eclipse Forms的一個設(shè)計目標就是讓能夠在編輯器/視圖中創(chuàng)建普通SWT組件.因為form的body是一個普通composite,你能夠在它里面使用任何layout和組件.但是,記住"原生的"SWT組件有一個組件背景.我們現(xiàn)在通過它們的構(gòu)造方法創(chuàng)建一些組件.
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); 現(xiàn)在我們使用了兩列,并且創(chuàng)建了一個標簽(label),一個文本框(text field)和一個復(fù)選框(checkbox).結(jié)果如下:

圖4:一個擁有直接用它們的構(gòu)造器創(chuàng)建出的SWT組件的form
這張圖片怎么回事?我們創(chuàng)建的組件的背景直接和系統(tǒng)窗口背景相匹配,而不是和form的背景匹配.另外,文本框看起來還好是因為這張截圖是在Windows xp下截的.在其它操作系統(tǒng)上,它會看起來是有一個3D邊框的空白條.為了解決這個問題,我們會用toolkit的工廠方法來創(chuàng)建這些組件:
Label label = toolkit.createLabel(form.getBody(), "Text field label:");
新聞熱點
疑難解答