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