定制窗口小部件

您可能想通过实现您自己的定制窗口小部件来扩展 SWT。SWT 本身提供了一个包 org.eclipse.swt.custom,它包含不在 SWT 控件的核心组中,但作为实现平台工作台所需要的定制控件。

控件
用途
CBanner 在工作台中,使用 CBanner 来安排工具栏区域和透视图切换工具栏的布局。
CCombo 与 Combo 类似,但它可以垂直地调整大小,从而使其能够被放到表单元格中。
CLabel 与 Label 类似,但是支持使用省略号来缩短文本。当在活动工作台视图中查看时,还支持背景色的倾斜效果。不支持覆盖。
CTabFolder 类似于 TabFolder,但是它支持标记(顶部或底部)和边界的可视外观的附加配置。
CTabItem 与 CTabFolder 中的页面的选项卡相对应的可选择用户界面对象。
SashForm 组合体控件,将它的子代布局为按行或列排列,并使用“窗框”来分隔它们,以便用户可以调整它们的大小。
ScrolledComposite 组合体控件,滚动它的内容,并可选择伸展其内容以填充可用空间。
StyledText 可编辑的控件,允许用户输入文本。控件内的文本范围可以具有截然不同的颜色和字体样式。
ViewForm 在工作台中,使用 ViewForm 来对视图的标注/工具栏/菜单局部栏进行定位和调整大小。

实现定制窗口小部件

一旦已经确定了您需要定制窗口小部件并且已经决定了必须支持哪些平台,就可以考虑窗口小部件的几种实现技术。根据底层操作系统平台中提供的内容,这些技术可以配合使用。

本机实现

如果应用程序需要不是由 SWT 提供的本机窗口小部件,则将需要在本地实现它。这可以是平台窗口小部件、第三方窗口小部件或者是平台共享库中的其它任何窗口小部件。可以在使用 SWT 来创建您自己的窗口小部件中找到本机定制窗口小部件实现的完整示例。

组合现有的窗口小部件

可以对窗口小部件进行组合以形成更复杂的窗口小部件。例如,可以将文本输入窗口小部件与按钮和下拉列表一起使用以实现组合框。要实现组合的窗口小部件,请创建 Composite 的子类并以内部方式管理子代。

可以在 CCombo 中找到简单的示例。

定制的已绘制的实现

在某些情况下,没有任何本机代码或现有窗口小部件来帮助您实现新的窗口小部件。这就意味着您自己必须在 Paint 事件的处理程序中绘制窗口小部件。尽管此技术可能会变得相当复杂,但是它具有可以生成完全可移植的实现的优点。

定制的已绘制控件是通过作为 CanvasComposite的子类实现的。如果窗口小部件不会包含任何子控件,则作为 Canvas 的子类。

定制的已绘制的窗口小部件的内部实现通常涉及到下列主要任务:

org.eclipse.swt.custom 中实现的许多窗口小部件都使用此方法。可以在 CLabel 中找到简单的示例。

有关定制窗口小部件进一步的信息可以在使用 SWT 来创建您自己的窗口小部件中找到。