ExpandableComposite
的操作类似于 Group
控件,它能够将页面的某个部分折叠,即作为切换控件:
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); 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
在展开状态更改时自动处理回流。展开状态通知有其它一些让人感兴趣的用法,即将段内容的创建延迟到段展开后进行。