2 每个Composite容器一定都要设置Layout,否则可能会显示不出东西。一般来说都是设置GridLayout, 假如Composite本身就放置一个控件,比如说就放置一个Table,那么也可以用FillLayout。对于新手来说,推荐全部使用GridLayout,否则轻易出现Layout和LayoutData不匹配的情况,而且假如界面很复杂的话,问题是很难找到的。GridLayout完全可以替代其他Layout,实现各种需求(假如有控件重叠的情况,就不行了,就要使用FormLayout)。 下面是一段源码,推荐按照这种方式构建界面。 public class TestComposite extends Composite ...{
PRivate Text text; /** *//** * Create the composite * @param parent * @param style */ public TestComposite(Composite parent, int style) ...{ super(parent, style); setLayout(new GridLayout()); createArea(this); } private void createArea(Composite parent)...{ text = new Text(this, SWT.BORDER); text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
final Button button = new Button(this, SWT.NONE); button.setText("button"); }
@Override public void dispose() ...{ super.dispose(); } }