随便看看JFace 的package ,发现了一个名字很有意思的类GridDataFactory,可以用来代替SWT中GridData的使用,而且特别方便。以下直接copy了源代码前面的说明,使用很简单,看一下就明白了。求知欲望更强烈的可以看一下它的源代码。
*
//
Example 1: Typical grid data for a non-wrapping label
*
*
//
GridDataFactory version
*
GridDataFactory.fillDefaults().applyTo(myLabel);
*
*
//
Equivalent SWT version
*
GridData labelData
=
new
GridData(GridData.HORIZONTAL_ALIGN_FILL
|
GridData.VERTICAL_ALIGN_FILL);
*
myLabel.setLayoutData(labelData);
*
*
//
/
*
//
Example 2: Typical grid data for a wrapping label
*
*
//
GridDataFactory version
*
GridDataFactory.fillDefaults()
*
.align(SWT.FILL, SWT.CENTER)
*
.hint(
150
, SWT.DEFAULT)
*
.grab(
true
,
false
)
*
.applyTo(wrappingLabel);
*
*
//
Equivalent SWT version
*
GridData wrappingLabelData
=
new
GridData(GridData.FILL_HORIZONTAL
|
GridData.VERTICAL_ALIGN_CENTER);
*
wrappingLabelData.minimumWidth
=
1
;
*
wrappingLabelData.widthHint
=
150
;
*
wrappingLabel.setLayoutData(wrappingLabelData);
*
*
//
*
//
Example 3: Typical grid data for a scrollable control (a list box, tree, table, etc.)
*
*
//
GridDataFactory version
*
GridDataFactory.fillDefaults().grab(
true
,
true
).hint(
150
,
150
).applyTo(listBox);
*
*
//
Equivalent SWT version
*
GridData listBoxData
=
new
GridData(GridData.FILL_BOTH);
*
listBoxData.widthHint
=
150
;
*
listBoxData.heightHint
=
150
;
*
listBoxData.minimumWidth
=
1
;
*
listBoxData.minimumHeight
=
1
;
*
listBox.setLayoutData(listBoxData);
*
*
/
*
//
Example 4: Typical grid data for a button
*
*
//
GridDataFactory version
*
Point preferredSize
=
button.computeSize(SWT.DEFAULT, SWT.DEFAULT,
false
);
*
Point hint
=
Geometry.max(LayoutConstants.getMinButtonSize(), preferredSize);
*
GridDataFactory.fillDefaults().align(SWT.FILL, SWT.CENTER).hint(hint).applyTo(button);
*
*
//
Equivalent SWT version
*
Point preferredSize
=
button.computeSize(SWT.DEFAULT, SWT.DEFAULT,
false
);
*
Point hint
=
Geometry.max(LayoutConstants.getMinButtonSize(), preferredSize);
*
GridData buttonData
=
new
GridData(GridData.HORIZONTAL_ALIGN_FILL
|
GridData.VERTICAL_ALIGN_CENTER);
*
buttonData.widthHint
=
hint.x;
*
buttonData.heightHint
=
hint.y;
*
button.setLayoutData(buttonData);
类似的还有一个GridLayoutFactory。