布局

通常,处理简单窗口小部件定位的最佳方法是在大小调整事件侦听器中进行处理。然而,当放置窗口小部件时,应用程序使用公共模式。这些模式可以构造为可配置的布局算法,许多不同的应用程序都可以重用该算法。

SWT 定义了布局,它提供组合体中子窗口小部件的通用定位和缩放。布局是抽象类布局的子类。可以在 org.eclipse.swt.layout 包中找到 SWT 标准布局。

在对窗口小部件进行大小调整和定位时,将使用一些一般的定义:

这些概念与应用程序有关,不管是否使用了布局。可以认为布局是打包调整大小功能以便重用的便捷方法。

布局还引入了一些附加概念:

有关进一步的讨论和用来演示这些概念的图片,请参阅了解 SWT 中的布局

以下代码段说明了一种简单情况,应用程序使用调整大小回调来将标签的大小调整为它的父代 shell 的大小:

      Display display = new Display ();
      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 ());
      }
   });

以下代码段使用布局来获得相同的效果:

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

即使对于此简单示例,使用布局也减少了应用程序代码。对于更复杂的布局,简化更大。

下表总结了 SWT 提供的标准布局。

布局
目的
填充布局 将控件安排成一行或一列,并强制使它们大小相同。
表单布局 通过使用 FormAttachments 可选地配置每个子代的左边、顶边、右边和底边来定位子代。
网格布局 将子代放置成行和列。
行布局 将子代放置成水平的行或垂直的列。