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类似, 但是它可以保持按下状态直到第二次单击。 |