SWT Part 4 —— Layout (布局)

        通常,在risize 事件监听器中处理简单的界面部件的定位是最好的方法,但是在应用程序中存在定位界面部件的一般模式,这些模式可以构建为可配置的布局算法,在很多不同的应用中重用。

        SWT 定义了通用的布局类,帮助我们在容器中定位部件位置和设置部件大小,这些布局了都是抽象类Layout 的子类,包含着 org.eclipse.swt.layout 包中。

 

在设定部件大小和位置时,有一些通用的概念:

  • 部件的位置由它在其父容器部件中的x、y 坐标位置确定的
  • 界面部件的首选尺寸(preferred size)是显示其内容所需要的最小尺寸,不同部件使用不同计算方式
  • 部件的 clientArea 是部件的客户端区域,在这个区域中子部件不会被裁减掉
  • trim 是部件的客户端区域和其实际的边框之间的距离,trim 被部件的边框或其边缘位置的额外空间占据。trim 的尺寸和外观依赖于不同的界面部件和所在平台。
不管是否使用布局,这些概念都是和应用程序相关的,你可以把布局当作一种方便快捷、可以重用的定位布局界面部件的方式。

布局引入了新的概念:
  • 一部分布局类支持界面部件之间的间隔 (spacing)
  • 一部分部件类支持布局的边缘和邻近边缘的部件之间的边距 (margin)
Understanding layouts in SWT 这篇文章更深入地探讨了这些概念,并且使用图片直观地展示了布局的原理。
    
下面的代码片段展示了使用resize 事件监听器的方式把标签(label)的大小设置为其父容器shell的大小的例子:
   Shell shell = new Shell (display);
   Label label = new Label (shell, SWT.CENTER);
   shell.addControlListener (new ControlAdapter () {
      public void controlResized (ControlEvent e) {
         label.setBounds (shell.getClientArea ());
      }
   });

 

下面是使用布局达到同样效果的例子:

   Shell shell = new Shell (display);
   Label label = new Label (shell, SWT.CENTER);
   shell.setLayout (new FillLayout ());

在这个简单的例子中,布局减少了应用程序的代码,在更为复杂的布局中,将产生更大的简化效果。

 

下面列出了SWT 提供的标准布局:

  • FillLayout 在一行或一列中以同样大小显示控件
  • FormLayout 使用 FormAttachments 通过可选择地配置每一个子控件的左、上、右、下的边来定位子控件的位置,
  • GridLayout 通过行和列的方式定位子控件的位置
  • RowLayout 在行或列中放置子控件
附:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值