So far we have used the term widget without a formal definition. In the SWT class hierarchy, a Widget is the abstract class for any UI object that can be placed inside another widget. A Control is a widget that typically has a counterpart representation, denoted by an OS window handle, in the underlying platform.
We tend to use the terms widget and control interchangeably. Although the distinction matters in the SWT implementation, we don't focus on this difference from an application's point of view. If you review the SWT widget hierarchy, you will see that a Control is something that you can create and place anywhere you want in your widget parent/child tree. Widgets that are not controls are typically more specialized UI objects that can be created only for certain types of parents.
The SWT API reference and examples are full of information about the different kinds of controls and their usage. The org.eclipse.swt.widgets package defines the core set of widgets in SWT. The following table summarizes the concrete types of controls provided in this package and their purpose. (Abstract classes are eliminated from this list).
Widget
| Purpose
| Styles
Events
|
| Button
Selectable control that issues notification when pressed
and/or released.
|
| BORDER, CHECK, PUSH,
RADIO, TOGGLE, FLAT, LEFT, RIGHT, CENTER, ARROW (with UP, DOWN)
Dispose, Control*, Selection
|
| Canvas
Composite control that provides a surface for drawing arbitrary
graphics. Often used to implement custom controls.
|
| BORDER, H_SCROLL, V_SCROLL,
NO_BACKGROUND, NO_FOCUS, NO_MERGE_PAINTS, NO_REDRAW_RESIZE, NO_RADIO_GROUP
Dispose, Control*
|
| Caret
An i-beam that is typically used as the insertion point
for text.
|
| Dispose
|
| Combo
Selectable control that allows the user to choose a string
from a list of strings, or optionally type a new value into an editable
text field. Often used when limited space requires a pop-down presentation
of the available strings rather than using a single selection list box.
|
| BORDER, DROP_DOWN, READ_ONLY,
SIMPLE
Dispose, Control*, DefaultSelection, Modify, Selection
|
| Composite
Control that is capable of containing other widgets.
|
| BORDER, H_SCROLL, V_SCROLL
Dispose, Control*
|
| CoolBar
Composite control that allows users to dynamically reposition
the cool items contained in the bar.
|
| BORDER
Dispose, Control*
|
| CoolItem
Selectable user interface object that represents a dynamically
positionable area of a cool bar.
|
| DROP_DOWN
Dispose
|
| Group
Composite control that groups other widgets and surrounds
them with an etched border and/or label.
|
| BORDER, SHADOW_ETCHED_IN,
SHADOW_ETCHED_OUT, SHADOW_IN, SHADOW_OUT, SHADOW_NONE
Dispose, Control*
|
| Label
Non-selectable control that displays a string or an image.
|
| BORDER, CENTER, LEFT, RIGHT,
WRAP, SEPARATOR (with HORIZONTAL, SHADOW_IN, SHADOW_OUT, SHADOW_NONE, VERTICAL)
Dispose, Control*
|
| List
Selectable control that allows the user to choose a string
or strings from a list of strings.
|
| BORDER, H_SCROLL, V_SCROLL,
SINGLE, MULTI
Dispose, Control*, Selection, DefaultSelection
|
| Menu
User interface object that contains menu items.
|
| BAR, DROP_DOWN, NO_RADIO_GROUP, POP_UP
Dispose, Help, Hide, Show
| MenuItem
| Selectable user interface object that represents an item
in a menu.
| CHECK, CASCADE, PUSH, RADIO, SEPARATOR
| Dispose, Arm, Help, Selection
|
| ProgressBar
Non-selectable control that displays progress to the user,
typically in the form of a bar graph.
|
| BORDER, INDETERMINATE, SMOOTH, HORIZONTAL,
VERTICAL
Dispose, Control*
|
| Sash
Selectable control that allows the user to drag a rubber
banded outline of the sash within the parent window. Used to allow users
to resize child widgets by repositioning their dividing line.
|
| BORDER, HORIZONTAL, VERTICAL
Dispose, Control*, Selection
|
| Scale
Selectable control that represents a range of numeric values.
|
| BORDER, HORIZONTAL, VERTICAL
Dispose, Control*, Selection
| ScrollBar
| Selectable control that represents a range of positive
numeric values. Used in a Composite that has V_SCROLL and/or H_SCROLL styles.
| HORIZONTAL, VERTICAL
| Dispose, Selection
|
| Shell
Window that is managed by the OS window manager. Shells
can be parented by a Display (top level shells) or by another shell (secondary
shells).
|
| BORDER, H_SCROLL, V_SCROLL,
CLOSE, MIN, MAX, NO_TRIM, RESIZE, TITLE (see also SHELL_TRIM, DIALOG_TRIM)
Dispose, Control*, Activate, Close, Deactivate, Deiconify,
Iconify
|
| Slider
Selectable control that represents a range of numeric values.
A slider is distinguished from a scale by providing a draggable thumb that
can adjust the current value along the range.
|
| BORDER, HORIZONTAL, VERTICAL
Dispose, Control*, Selection
|
| TabFolder
Composite control that groups pages that can be selected
by the user using labeled tabs.
|
| BORDER
Dispose, Control*, Selection
| TabItem
| Selectable user interface object corresponding to a tab
for a page in a tab folder.
|
| Dispose
|
| Table
Selectable control that displays a list of table items
that can be selected by the user. Items are presented in rows that display
multiple columns representing different aspects of the items.
|
| BORDER, H_SCROLL, V_SCROLL,
SINGLE, MULTI, CHECK, FULL_SELECTION, HIDE_SELECTION, VIRTUAL
Dispose, Control*, Selection, DefaultSelection
| TableColumn
| Selectable user interface object that represents a column
in a table.
| LEFT, RIGHT, CENTER
| Dispose, Move, Resize, Selection
| TableItem
| Selectable user interface object that represents an item
in a table.
|
| Dispose
|
| Text
Editable control that allows the user to type text into
it.
|
| BORDER, SINGLE, READ_ONLY, LEFT, CENTER, RIGHT, WRAP, MULTI (with H_SCROLL, V_SCROLL)
Dispose, Control*, DefaultSelection, Modify, Verify
|
| ToolBar
Composite control that supports the layout of selectable
tool bar items.
|
| BORDER, FLAT, WRAP, RIGHT, SHADOW_OUT
HORIZONTAL, VERTICAL
Dispose, Control*,
| ToolItem
| Selectable user interface object that represents an item
in a tool bar.
| PUSH, CHECK, RADIO, SEPARATOR,
DROP_DOWN
| Dispose, Selection
|
| Tracker
User interface object that implements rubber banding rectangles.
|
| LEFT, RIGHT, UP, DOWN, RESIZE
Dispose, Move, Resize
|
| Tree
Selectable control that displays a hierarchical list of
tree items that can be selected by the user.
|
| BORDER, H_SCROLL, V_SCROLL,
SINGLE, MULTI, CHECK
Dispose, Control*, Selection, DefaultSelection, Collapse,
Expand
| TreeItem
| Selectable user interface object that represents a hierarchy
of tree items in a tree.
|
| Dispose
| |
---|
Control* = Events inherited from Control: FocusIn, FocusOut, Help, KeyDown, KeyUp, MouseDoubleClick, MouseDown, MouseEnter, MouseExit, MouseHover, MouseUp, MouseMove, Move, Paint, Resize