8. Widgets
SWT GUI对象是从Widget和Control类继承而来的。Widget对象是基类定义了GUI类的通用方法。Control类是所有窗口GUI类的基类也就是说从Control类继承的组件需要一个窗口或者对话框来显示。
Menu对象也需要一个窗口来显示,但是这个需求间接得到了满足。一个Menu对象需要一个Control对象。
图4. Widget类层次图
图 4 显示了Widget的类层次图。Widget,Item,ScrollBar和Control类是抽象类。
8.1. Widget事件
Widget事件总结表3。简化起见,表中只包含了事件名称。我们可以很容易的使用<EventName>Event 想出事件类的名称。同样地,使用<Listener Name>Listener得到相关联地Listener地名称。并不是每一事件都有相配地Adapter类。所以,有adapter地事件用粗体表明。我们可以通过<EventName>Adaptor 来得到对应地adapter名字。
例子:
事件名称是Control,事件类就是ControlEvent,listener类是ControlListener,adaptor 类是ControlAdaptor。
表3. SWT Events
事件名称
窗口组件
产生的时间
Arm
MenuItem
一个菜单项加亮时
Control
Control, TableColumn, Tracker
一个控件被改变大小或者移动时
Dispose
Widget
窗口组件被销毁时
Focus
Control
一个控件得到或者失去焦点时
Help
Control, Menu, MenuItem
用户需要帮助时(例如按F1键)
Key
Control
当控件得到键盘焦点并且一个键按下或者释放时
Menu
Menu
菜单显示或者隐藏时
Modify
Combo, Text
窗口组件的文本被修改时
Mouse
Control
在控件范围内鼠标被按下,释放或者双击时
MouseMove
Control
鼠标越过控件
MouseTrack
Control
鼠标进入,离开或者盘旋在控件上方
Paint
Control
控件需要被重绘时
Selection
Button, Combo, CoolItem, List, MenuItem, Sash, Scale, ScrollBar, Slider, StyledText, TabFolder, Table, TableColumn, TableTree, Text, ToolItem, Tree
一个Item在控件中被选择时
Shell
Shell
Shell被最小化,最大化,激活,钝化或者关闭时
Traverse
Control
控件被遍历(tabbed)时
Tree
Tree, TableTree
一个tree item被收缩或者展开时
Verify
Text, StyledText
窗口组件的文本将要被修改时
8.2. 有用的窗口组件
图 5. Control类层次图
所有的Control类都可以有边框。你可以使用SWT.BORDER常量来给控件类增加边框。
SWT style常量
一般都需要标明样式常量 (style bit).如果你不知道用哪个常量或者你不想要标明它,你可以使用SWT.NULL。
8.2.1. 按钮
按钮可以具有不同的样式。按钮的样式由style bit决定。表4显示了按钮列表和他们的样式常量。
Table 4. SWT按钮style bit常量和例子
常量
例子
描述
SWT.ARROW
一个按钮用于显示弹出对话框。箭头的方向由alignment常量决定。
SWT.CHECK
选择框,可以是图像。
SWT.PUSH
一个按钮
SWT.RADIO
在group中可以使用的单选按钮
SWT.TOGGLE
同SWT.PUSH类似, 但是它可以保持按下状态直到第二次单击。