SWT Layout--GridLayout

NumColumns(列数)是GridLayout中最重要的域,它将Composite划分成NumColumns列,往上添加控件时依次从左至右排列当控件数多于列数时换行

Display display = new Display();
   Shell shell = new Shell(display);
   GridLayout gridLayout = new GridLayout();
   gridLayout.numColumns = 3;
   shell.setLayout(gridLayout);
   new Button(shell, SWT.PUSH).setText("B1");
   new Button(shell, SWT.PUSH).setText("Wide Button 2");
   new Button(shell, SWT.PUSH).setText("Button 3");
   new Button(shell, SWT.PUSH).setText("B4");
   new Button(shell, SWT.PUSH).setText("Button 5");
   shell.pack();
   shell.open();
   while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) display.sleep();
   }
MakeColumnsEqualWidth
使每列的宽度相同,默认值为false

MarginWidth, MarginHeight, HorizontalSpacing, and VerticalSpacing
页边宽度,页边高度,水平间隔,垂直间隔

GridData
GridData是控制小部件布局的对象,例如
   GridData gridData = new GridData();
   gridData.horizontalAlignment = GridData.FILL;//horizontalAlignment是指水平对齐方式
//(有GEGINING,END,CENTRE,FILL)
   gridData.grabExcessHorizontalSpace = true;
   button1.setLayoutData(gridData);
注意:每个在GridLayout中的widget都有一个自己的GridData,如果没有为它设置则系统会给他一个默认的GridData!

HorizontalAlignment and VerticalAlignment

每个alignment域指定控件在它的格子单元内水平/垂直怎样对齐,他们是下面4个值中的一个

          ·      BEGINNING(左对齐)·      CENTER(中间对齐)·      END右对齐·      FILL充满格子

缺省值为horizontalAlignment is BEGINNING , verticalAlignment is CENTER

HorizontalIndent

允许你将widget向右移动指定的像素位

GridData gridData = new GridData();

gridData.horizontalIndent = 4;

button.setLayoutData(gridData);

HorizontalSpan and VerticalSpan

span域可使widget占据多个grid单元(仅在horizontalAlignment为Fill时有效)

GridData gridData = new GridData();

gridData.horizontalAlignment = GridData.FILL;

gridData.horizontalSpan = 2;

button5.setLayoutData(gridData);

 也可以它在垂直方向占用多个grid单元(仅在verticalAlignment为Fill时有效)

注意:假如所有的widgets总共只有x行则你想让它在垂直方向占有x+1个grid单元是没有作用的

GrabExcessHorizontalSpace and GrabExcessVerticalSpace

当用户改变窗口大小时, GrabExcessHorizontalSpace 和GrabExcessVerticalSpace指定该控件是否填充增大的空间

WidthHint and HeightHint

指定widget的大小(如果horizontalAlignment或verticalAlignment为FILL的时候就没有意义了)

GridData gridData = new GridData();

       gridData.widthHint = 70;

       gridData.heightHint = 40;

       button5.setLayoutData(gridData);

注:最好不要对大小硬编码

 

Style 常量

描述

FILL_HORIZONTAL

扩展单元来水平地充满任何空余空间。

HORIZONTAL_ALIGN_FILL

FILL_VERTICAL

扩展单元来垂直地充满任何空余空间。

VERTICAL_ALIGN_FILL

FILL_BOTH

水平和垂直地扩展单元空间。

等价于FILL_HORIZONTAL | FILL_VERTICAL.

HORIZONTAL_ALIGN_BEGINNING

居左排列单元内容。

HORIZONTAL_ALIGN_END

居右排列单元内容。

HORIZONTAL_ALIGN_CENTER

水平居中排列单元内容。

HORIZONTAL_ALIGN_FILL

扩展单元空间充满单元内水平空余空间。

VERTICAL_ALIGN_BEGINNING

排列单元内容于单元顶部。

VERTICAL_ALIGN_END

排列单元内容于单元底部。

VERTICAL_ALIGN_CENTER

排列单元内容于垂直中央。

VERTICAL_ALIGN_FILL

扩展单元空间充满单元内垂直空余空间。

 

 

Table 6.2 GridData 尺寸属性

属性

描述

默认值

widthHint

列的最小宽度。SWT.DEFAULT指明了没有最小宽度。

SWT.DEFAULT

heightHint

行的最小高度。SWT.DEFAULT指明了没有最小高度。

SWT.DEFAULT

horizontalIndent

单元左侧边际与control之间的象素间隙数量。

0

horizontalSpan

单元所覆盖的网格的列的数目。

1

verticalSpan

单元所覆盖的网格的行的数目。

1

 

参考:http://www.eclipse.org/articles/Understanding%20Layouts/Understanding%20Layouts.htm

你可能感兴趣的:(SWT Layout--GridLayout)