Table 1. SWT vs. AWT and Swing Feature comparison
Function/Role/Aspect
AWT
Swing
SWT (style)
Display static text
Label
JLabel
Label, CLabel
Display multi-line static text
Multiple Labels
Multiple JLabels or JLabel with HTML content
Multiple Labels or Label with newlines
Display multi-line formatted static text
Multiple Labels with different fonts
JLabel with HTML content
Multiple Labels with different fonts
Single-line text entry
TextField
JTextField
Text(SWT.SINGLE)
Multi-line text entry
TextArea
JTextArea
Text(SWT.MULTI)
Display an image
N/A
JLabel
Label
Display text and image
N/A
JLabel
CLabel
ToolTip pop-up help
N/A
setToolTip on component, subclass JToolTip
setToolTip on control
Styled text entry
N/A
JEditorPane
StyledText
Select from list of items
List
JList
List
Simple push button with text
Button
JButton
Button(SWT.PUSH)
Simple push button with text and/or image
N/A
JButton
Button(SWT.PUSH)
Drawing area; possibly for custom controls
Canvas
JPanel
Canvas
On/off check box
CheckBox
JCheckBox
Button(SWT.CHECK)
Radio selection
CheckBoxGroup
ButtonGroup and menus
Group and Menu
Select from a drop-down list
Choice
JComboBox
Combo, CCombo
Enter text or select from a drop-down list
N/A
JComboBox
Combo, CCombo
Scrollable area
ScrollPane
JScrollPane
Create Scrollable subclass
Top level windows
Dialog, Frame, Window
JDialog, JFrame, JWindow
Shell with different styles
Generic window
Window
JWindow
Shell
Frame window
Frame
JFrame
Shell(SWT.SHELL_TRIM)
Dialog window
Dialog
JDialog
Shell(SWT.DIALOG_TRIM)
Menu
Menu
JMenu
Menu
MenuItem
MenuItem
JMenuItem
MenuItem
Menu shortcuts
Generic keystrokes
same as AWT
host dependent mnemonics and accelerators
Pop-up menu
PopupMenu
JPopupMenu
Menu(SWT.POPUP)
Menu bars
MenuBar
JMenuBar
Menu(SWT.BAR)
Display an insertion caret
N/A
Caret
Caret
Web browser
N/A
JTextPane (HTML 3.2)
Browser (via embedded browser)
Embed control in web page
Applet
JApplet
Host control (ex. OLE)
Generic container of other controls
Panel
JPanel
Composite
Generic container of other controls with a border
Panel (if drawn manually)
JPanel with a Border
Composite(SWT.BORDER)
Generic container of other controls with a border and title
N/A
JPanel with a TitledBorder
Group
Radio button (one of set on)
Checkbox
JRadioButton
Button(SWT.RADIO)
Control extent of radio buttons
CheckboxGroup
RadioButtonGroup
Group
Arrow buttons
N/A
JButton with image
Button(SWT.ARROW)
Supports int'l text orientations
via ComponentOrientation
same as AWT
Many components support styles for this
Focus Traversal
Policy and Manager objects
same as AWT
Next on control
Custom dialogs
Dialog subclass
JDialog subclass
Dialog subclass
Access to system events
EventQueue services
same as AWT
Display services (less robust than AWT)
System access dialogs
FileDialog
JColorChooser, JFileChooser
ColorDialog, DirectoryDialog, FileDialog, FontDialog, PrintDialog
Display simple message dialog
N/A (must subclass Dialog)
JOptionPane static methods
MessageBox with numerous styles
Display simple prompting dialog
N/A (must subclass Dialog)
JOptionPane static methods
N/A (classes exist in JFace to do this)
Layout managers
BorderLayout, CardLayout, FlowLayout, GridLayout, GridBagLayout
AWT plus BoxLayout, CenterLayout, SpringLayout
FillLayout, FormLayout, GridLayout, RowLayout, StackLayout
Basic drawing control
Canvas
JPanel
Canvas
Basic drawing
Graphics and Graphics2D objects - Basic shapes and text, arbitrary Shapes and Strokes, Bezier, fills, etc.
same as AWT
GC object - Basic shapes and text
Drawing transforms
Affine, composites
same as AWT
N/A
Off screen drawing
BufferedImage, drawImage
same as AWT
Image, drawImage
Double buffering
Manual
Automatic or manual
Manual unless provided by host control
Printing
PrintJob and PrintGraphics
same as AWT
draw to Printer device
Custom colors
Color
same as AWT
Color
Custom fonts
Font, FontMetrics
same as AWT
Font
Cursors selection
Cursor
same as AWT
Cursor
Image features
load from file, create dynamically, extensive edits
same as AWT
load from file, create dynamically, basic edits
Input automation
Robot
same as AWT
N/A
Display a tool bar
N/A
JToolBar
ToolBar, CoolBar
Display a progress bar
N/A
JProgressBar
ProgressBar
Divide space between areas
N/A
JSplitPane
Sash or SashForm
Display tabbed areas
N/A
JTabbedPane
TabFolder, CTabFolder
Display tabular info
N/A
JTable
Table
Format table columns
N/A
TableColumn
TableColumn
Display hierarchical info
N/A
JTree
Tree
Select from range of values
N/A
JSlider
Slider
Select from discrete range of values
N/A
JSpinner
Scale
Access to the base display
Toolkit, GraphicsConfiguration, GraphicsDevice
same as AWT
Display
Add items to the system tray
N/A
N/A
Tray
Key: N/A - Not available. In many cases, this feature can be created, with varying degrees of difficulty, by creating custom controls or containers of controls or by other custom programming.
作者最后得出的结论是如果你只开发用于某一特性平台(当然,只能是主流平台),SWT就有优势了,它可以集成这些平台的特有的功能。例如在Windows下使用ActiveX控件。