IBM实验室对SWT, Swing 和 AWT 的特征比较

时间:2023-01-27 17:38:01
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控件。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=610935