ExpandableComposite
的作用類似 Group
控制項,
能夠透過切換控制項來收合部分頁面:
ExpandableComposite ec = toolkit.createExpandableComposite(form.getBody(), ExpandableComposite.TREE_NODE| ExpandableComposite.CLIENT_INDENT); ec.setText("Expandable Composite title"); String ctext = "我們現在要建立有點長的文字,使得"+ "我們能夠使用它作為可展開之複合項的內容。"+ "可展開的複合項可以利用"+ "切換控制項,來隱藏或顯示文字"; Label client = toolkit.createLabel(ec, ctext, SWT.WRAP); ec.setClient(client); ec.addExpansionListener(new ExpansionAdapter() { public void expansionStateChanged(ExpansionEvent e) { form.reflow(true); } });
ExpandableComposite
控制項會接受許多影響其外觀和行為的樣式。TREE_NODE
樣式會建立用於樹狀結構小組件中來展開及收合節點的切換控制項,
而 TWISTIE
則會建立三角形樣式的切換項。使用 EXPANDED
會建立起始狀態為展開的控制項。如果使用 COMPACT
樣式,
控制項會處於收合狀態,且報告的寬度只足以納入標題行(亦即,在收合時,
會儘可能以水平方向壓縮)。最後,CLIENT_INDENT
會將用戶端縮排,
以對齊標題(否則,用戶端會對齊切換控制項)。
可展開的複合項本身會負責呈現切換控制項和標題。用來展開或收合的控制項則會設為用戶端。請注意,需求為用戶端是可展開之複合項的直屬子項。
當展開狀態變更時,可展開的複合項會發動 ExpansionEvent
物件。為了能夠在狀態變更時重排表單,
需要加入展開接聽器到控制項中。這是因為展開會以可展開的複合項大小來進行變更,
但是在下次佈置母項之前,變更不會生效(因此需要強迫執行)。
Section
是可擴充複合項的子類別,其加入了其他的功能。它通常用來將表單分割成許多區段,
每一個區段都有自己的標題和選用說明。當您使用
Section.TITLE_BAR
或 Section.SHORT_TITLE_BAR
樣式時,
標題區周圍的裝飾會進一步增強分組功能。
和 ExpandableComposite
不一樣的是,Section
會在展開狀態變更時,
自動處理重排的動作。展開狀態通知之其他有趣的用法是,
直到區段被展開之後,才被動建立延遲的 Section 內容。