1.2 标准布局
SWT中的标准布局类有:
l         FillLayout:以相同的大小单行或单列的排列组件;
l         RowLayout:以单行或多行的方式使用fill,wrap,spacing,等选项排列组件;
l         GridLayout:在格子中排列组件;
l         FormLayout(SWT 2.0的新特性):通过创建组件各个边的“附件”来排列组件。
要使用标准布局类,需要引入SWT布局类包:
   import org.eclipse.swt.layout.*;
       布局是可插入的。要设置Composite组件的布局,使用setLayout(Layout)方法。一下代码演示了,一个Shell(Composite的子类)采用RowLayout来布局它的子组件。
   Shell shell = new Shell();
   shell.setLayout(new RowLayout());
       一个布局类可以有一个相应的布局数据类(Object的子类),可以对指定的子控件设置具体的布局方式。为了使用方便,布局数据类的名字是通过替换布局类的Layout为Data而得到。例如,标准布局类RowLayout的布局数据类是RowData,GridLayoutt的布局数据类是GridData,FormLayout的布局数据类是FormData。以下代码演示了如何设置组件的布局数据:
   Button button = new Button(shell, SWT.PUSH);
   button.setLayoutData(new RowData(50, 40));
1.3 本文档使用的例子
       本文档的多数屏幕截图是根据不同变量运行下面示例代码得到的。可以更改布局的类型、参数以及子组件的类型和数量:
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
public class LayoutExample {
   public static void main(String[] args) {
       Display display = new Display();
       Shell shell = new Shell(display);
       //创建布局
       RowLayout layout = new RowLayout();
       // 设置可选的选项
       layout.wrap = true;
       // 设置到容器上
       shell.setLayout(layout);
       // 创建容器的子组件
       new Button(shell, SWT.PUSH).setText("B1");
       new Button(shell, SWT.PUSH).setText("Wide Button 2");
       new Button(shell, SWT.PUSH).setText("Button 3");
       shell.pack();
       shell.open();
       while (!shell.isDisposed()) {
          if (!display.readAndDispatch()) display.sleep();
       }
   }
}
运行上面的代码,得到下图:

如果调整上面的界面,使右面放置不下Button 3,那么RowLayout将折行,在下一行显示Button 3,如图:

       使用布局受调整大小的很大限制。因此本文档的多数例子演示了如果容器变大或变小将如何布局,以此说明布局的工作原理。
 
(待续)