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
 
                    
                     
                    
                 
                    
                 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号