在前面的例子中,所有的组件都是放在shell中的,但是Composite才是最常用的容器类。组件是构建在容器类中的,这样就可以通过容器对组件进行集体操作了,例如,容器在页面上移动,其他组件也会跟着移动;容器隐藏,其他组件页会隐藏,容器销毁,其他组件也会销毁。
面板(Composite类)
格式:Composite(Composite parent , int sytle )
用法:Composite composite = new Composite(shell,SWT.NONE);
说明:这里第一个参数还是用了shell类,因为shell类属于Composite的子类,所以shell也可以当作Composite类型来用。Composite的式样一般都是用SWT.NONE,这时Composite的界面是不显示出来的,只暗地里发挥容器的作用,当然也可以用SWT.BORDER式样让它形成凹陷效果。
常用方法:
composite.getLayout(); 得到布局管理器
composite.getLayoutData(); 得到本身的布局数据
composite.getParent(); 得到容纳composite的父容器
composite.getShell(); 得到容纳composite的shell
composite.layout(); 将composite的组件重新布局,相当于刷新功能
分组框(Group类)
Group是composite的子类,所以Group和composite基本一样,主要区别是Group显示有一个方框,且方框上可以显示一串文字说明。
选项卡(TabFolder 类和 TabItem 类)
TabItem 并非容器类,所以Group是不能建立在TabItem 中的,Group和TabItem 以及其他组件一样建立在TabFolder容器下。
每一个TabItem 只能用setControl方法来控制一个页面组件。 这样我们把页面上的组件放到一个Group中,或composite中,在用TabItem 来控制一个Group的话, 就相当于控制了一个页面了。
分割窗(SashForm类)
分割窗是一个很常用的组件,资源管理器左右两个容器就是用分割窗分割开来的,只需要将组件创建在分割窗容器上,它就会自动的按设计好的方式分割排列好,在使用上很简单。
带滚动条的面板(ScrolledComposite类)
有些界面的组件会多到一个窗口无法装下,这时ScrolledComposite类就派上用场了。不过,ScrolledComposite虽然是Composite的子类,但不要将组件直接建立在ScrolledComposite中,而应该将组件都建立在Composite上,然后在将composite建立在ScrolledComposite中,也就是说用一个composite来做中转。