使用Layout管理UI布局我们在前面在一些例子中已经使用过Layout了。那么Layout到底是做什么的呢?
我们知道,在设计用户界面时候,我们可以采用的一种办法是手动的为每个部件设置合适当大小和位置。但是这样的话,如果你所要显示的部件比较多,编程量就会非常大,特别是考虑到窗体大小变化时候各种部件的重绘。而实际上,我们可以利用一些通用的规则或者说算法来安排这些部件的排列。比如下图所示的这个窗体:
图 10
很显然,对于这些规则化的部件排列,应该有一些更简单的办法,而不是在代码的各个部分写xxx.setBounds之类。swt给我们提供了这样的办法,就是使用Layout。
你可以把一个Layout看成是安排部件位置和大小的一个规则,在应用了Layout的Composite(我们在这里第一次提到了Composite,Composite就是一个能够包含其他控件的容器,比如Shell就是一个Composite,我们会在后面的部分详细介绍Composite)中,所有的子控件都会按照这个规则来进行排列。
在目前(写这篇文章的时候eclipse最新版本是3.1M7),org.eclipse.swt.layout包中包含四种已经定义好的Layout,它们分别是:FillLayout,FormLayou,GridLayout和RowLayout。我在这里不再一一作介绍,而是推荐大家看一下这篇文章《Understanding Layouts in SWT》。相信如果你有兴趣看完它的话,就会对Layout有比较深的了解。