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控件。
841

被折叠的 条评论
为什么被折叠?



