定制布局
有时,可能需要编写您自己的定制
Layout
类。当您具有用于应用程序中的许多不同位置的复杂布局时,这样作最合适。注意,除非您正在编写将供一些组合体窗口小部件使用的很普通的布局,否则,计算大小和定位调整大小侦听器中的子代有时更简单且更容易。
布局负责实现两种方法:
- 一旦根据布局算法来确定了组合体的所有子代的大小和位置,computeSize(...) 就会计算打包组合体的所有子代的矩形的宽度和高度。提示参数允许限制宽度和/或高度。例如,如果布局在一个维中受到约束,则布局可以选择在另一个维中增大。
- layout(...) 定位组合体的子代并调整其大小。布局可以选择高速缓存与布局相关的信息,例如,每个子代的首选范围。flushCache 参数告诉布局将高速缓存的数据清仓,当已经更改了除了组合体的大小之外的其它因素时(例如,创建或除去子代,或者更改了窗口小部件的字体),就需要这样做。
可以选择实现第三个方法 flushCache(...)
以清除与特定控件相关联的任何高速缓存数据。通常,窗口小部件的 computeSize() 方法的成本较高,因此布局可以对结果进行高速缓存以提高性能。
可以在了解 SWT 中的布局中找到关于定制布局的进一步讨论。