Eclipse Form程式設計指南(3)

來源:互聯網
上載者:User
程式|設計
4、複雜控制項

(1)       ExpandableComposite

l         Web頁面中一個通用的主題是具有收縮一部分頁面內容的能力







l         Eclipse Form也提供了這樣一個控制項:ExpandableComposite







l         下面的代碼片斷是使用ExpandableComposite的一個例子:







              ExpandableComposite ec = toolkit.createExpandableComposite(body,



                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);



                }



              });



l         這個控制項有很多風格,TREE_NODE使得該控制項具有樹型節點的展開、收縮功能;而TWISTIE使得控制項具有三角箭頭風格







l         EXPANDED使得初始展開顯示







l         CLIENT_INDENT使得Client內容縮排對齊







l         ExpandableComposite呈現為啟用控制項和標題,而可以展開、收縮的內容稱為Client







l         Client必須是可展開的composite(上例是Label控制項)







l         最後需要添加Expansion監聽器在狀態變化時,reflow Form(即根據控制項的新的大小重新置放和更新捲軸)







l         下面是上例的運行結果:





(2)Section







l         Eclipse Form中最常用的定製控制項就是Section(在PDE中到處可見)







l         Section擴充ExpandableComposite,但具有下面的新特性:







n         在標題下面有一個分隔控制項







n         在分隔控制項下面可以有一個描述文本







l         下面的代碼片斷是使用Section的一個例子,代碼和ExpandableComposite沒有太大差別,這裡是用了TWISTIE風格:







              Section section = toolkit.createSection(body, Section.DESCRIPTION



                       | 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");



              toolkit.createCompositeSeparator(section);



              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);



l         下面是上例的運行結果:








相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。