我们已经查看了一些简单的示例说明如何根据父代小窗口的大小来确定子代小窗口的大小或位置。到目前为止,已响应调整大小侦听器进行了计算。这通常是处理简单小窗口定位的最佳方法。然而,当放置小窗口时,应用程序使用公共模式。这些模式可以构造为可配置的布局算法, 许多不同的应用程序都可以重复使用该算法。
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 提供了可用于许多情况的四个缺省布局类。