国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

Eclipse Forms設計漂亮UI之高級組件

2024-07-21 02:14:51
字體:
來源:轉載
供稿:網(wǎng)友
  eclipse forms提供了4個高級組件,這樣你能夠構建漂亮的ui:expandable composite,section,image hyperlink和form text.讓我們依次仔細看看它們每一個。

  expandable composite

  在網(wǎng)頁中有個普遍的功能就是讓你有能力把一部分網(wǎng)頁內容用一個按鈕來伸縮它,eclipse forms提供了這樣一個組件:expandablecomposite。
 expandablecomposite ec = toolkit.createexpandablecomposite(form.getbody(),       expandablecomposite.tree_node|      expandablecomposite.client_indent);  ec.settext("expandable composite title");  string ctext = "we will now create a somewhat long text so that "+  "we can use it as content for the expandable composite. "+  "expandable composite is used to hide or show the text using the "   "toggle control";  label client = toolkit.createlabel(ec, ctext, swt.wrap);  ec.setclient(client);  td = new tablewrapdata();  td.colspan = 2;  ec.setlayoutdata(td);  ec.addexpansionlistener(new expansionadapter() {   public void expansionstatechanged(expansionevent e) {    form.reflow(true);   }  });
  這個composite接受一些風格參數(shù)來控制它的表現(xiàn)行為.treenode風格會用樹組件中的按鈕來伸展或收縮內容,twistie風格則會創(chuàng)建一個方行的按鈕.使用expanded,則初始狀態(tài)是伸展的.如果用compact風格,組件會報告和標題寬度相合適的寬度并且呈現(xiàn)收縮狀態(tài).最后,client_indent會使內容與標題對齊(否則,內容是按照組件的寬度).

  expandablecomposite有責任處理按鈕組件和標題.能擴展和收縮的客戶組件必須是expandablecomposite直接的child. 我們需要為組件添加伸展監(jiān)聽器并"通知(reflow)"form在狀態(tài)改變時.這是因為伸展改變了expandable composite的大小,但是在parent下一次布局前對parent沒有任何影響(因此需要強行告訴它).大體上,每次你使form的layout改變時,你需要"reflow"這個form."reflowing"這個form會讓所有組件按照新的尺寸布局并更新滾動條.

  我們的視圖現(xiàn)在看起來象這樣:
 

圖11:一個收縮狀態(tài)的expandable composite例子

  當你點擊標題的"+"時,composite伸展出并展示客戶:



圖12:expandable composite呈伸展狀態(tài)

  expandable composite用到了一個內部layout,這個layout實現(xiàn)了eclipse forms ilayoutextension接口.因此你能夠把它加到使用tablewraplayout布局的parent上,就象我們上面例子中做的一樣.

  段落(section)

  eclipse forms定制的組件中最versatile之一就是section.它繼承了expandable composite并介紹了以下的概念:

  1.分隔條(separator)-一個能夠在標題下創(chuàng)建的separator組件.

  2.描述(description)-在標題下的可選的描述.

  3.標題欄(title bar)-能在標題下的一個標題欄(注意separator和標題欄不能同時使用)

  下面的代碼和expandable composite代碼例子差不多:
 section section = toolkit.createsection(form.getbody(),    section.description|section.title_bar|   section.twistie|section.expanded);  td = new tablewrapdata(tablewrapdata.fill);  td.colspan = 2;  section.setlayoutdata(td);  section.addexpansionlistener(new expansionadapter() {   public void expansionstatechanged(expansionevent e) {    form.reflow(true);   }  });  section.settext("section title");  section.setdescription("this is the description that goes "+       below the title");  composite sectionclient = toolkit.createcomposite(section);  sectionclient.setlayout(new gridlayout());  button = toolkit.createbutton(sectionclient, "radio 1", swt.radio);  button = toolkit.createbutton(sectionclient, "radio 2", swt.radio);  section.setclient(sectionclient);

  這次我們用了twistie風格,添加了描述并要求有標題欄.這個視圖看起來應該象這樣:
 

圖13:一個有標題欄和描述的可伸展的section

  圖片超鏈接(image hyperlink)

  圖片超鏈接是超鏈接的子類,它在鏈接文字上面添加了一個圖片.這個平常的結合非常有意義.這個組件可以只是一個圖片(當沒有設置任何文字時),或是圖片加鏈接.圖片在正常,hover,激活時的狀態(tài)都能設置.

  下面是一個用圖片超鏈接的例子:



圖片14:eclipse歡迎頁面中的form

  form text組件

  使標簽(labels),超鏈接,圖片和tablewraplayout相結合,能夠創(chuàng)建出復雜和強大的forms.但是仍然有一些事是很難做的.考慮pde manifest編輯器的例子:
 



圖片15:一個混合了文本,圖片和超鏈接的復雜eclipse form例子

  注意圖片,超鏈接和文本是如何混合的.這里使用單獨的標簽和超鏈接組件是很困難的.為了解決這個問題,eclipse forms插件提供了一個強大的文本組件,它有以下功能:

  識別普通包裹的文本

  識別普通文本,但是如果以http://開頭的文本以超鏈接顯示

  識別象html語言一樣的文本

  在所有模式下,form text組件能識別一個字符串或輸入流(input stream).

  識別普通文本(標簽模式)

formtext formtext = toolkit.createformtext(form.getbody(), true);
 td = new tablewrapdata(tablewrapdata.fill);
 td.colspan = 2;
 formtext.setlayoutdata(td);
 string text = "here is some plain text for the text to render.";
 formtext.settext(text, false, false);

  第二個參數(shù)設為false,意思是我們不需要解析html標記,第三個參數(shù)設為false,意思是我們不需擴展urls.

  自動將urls轉化為超鏈接

  現(xiàn)在我們會在文本中添加一個超鏈接,并把第3個參數(shù)設為true:

formtext formtext = toolkit.createformtext(form.getbody(), true);
 td = new tablewrapdata(tablewrapdata.fill);
 td.colspan = 2;
 formtext .setlayoutdata(td);
 string text = "here is some plain text for the text to render; "+
   this text is at http://www.eclipse.org web site.";
 formtext .settext(text, false, true);

  如果看我們的視圖,會是這樣:
 

圖16:form text組件將url自動轉化為超鏈接

  url被轉化為了鏈接.這個鏈接是包裹的文本中的一部分-我們不需要創(chuàng)建單獨的超鏈接組件然后試著把它夾在兩個標簽中間.

  因為form text組件能夠識別超鏈接,因此它接收我們前面用過的監(jiān)聽器.當由toolkit創(chuàng)建時,form text會將toolkit的超鏈接組設置作為新超鏈接的設置.

中國最大的web開發(fā)資源網(wǎng)站及技術社區(qū),
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 闽侯县| 临澧县| 浙江省| 澄城县| 霍邱县| 万宁市| 孟州市| 乌审旗| 巴中市| 稷山县| 巴东县| 连江县| 休宁县| 宣恩县| 青浦区| 鸡西市| 保德县| 顺义区| 疏勒县| 大邑县| 平江县| 顺义区| 上虞市| 乌苏市| 墨竹工卡县| 朝阳区| 江北区| 澎湖县| 罗山县| 资阳市| 蒲城县| 灌南县| 佛坪县| 临邑县| 望江县| 固阳县| 义乌市| 通海县| 射洪县| 临江市| 靖远县|