swtswing:SWT、Swing 或 AWT:哪个更适合您?来源: 发布时间:星期一, 2009年2月23日 浏览:0次 评论:0
Abstract Windows Toolkit(AWT)是最原始
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 清单 1. 基本 ![]() ![]() 1 Object 2 CheckboxGroup 3 *Component 4 Button 5 Canvas 6 CheckBox 7 Choice 8 Container 9 Panel 10 Applet 11 ScrollPane 12 Window 13 Dialog 14 Frame 15 Label 16 List 17 TextComponent 18 TextArea 19 TextField 20 MenuComponent 21 MenuItem 22 CheckboxMenuItem 23 Menu 24 PopupMenu 25 注意:另外几个包中还有其他 ![]() ![]() ![]() ![]() 清单 2. AWT 提供了下面 ![]() ![]() 1 *LayoutManager 2 FlowLayout 3 GridLayout 4 *LayoutManager2 5 BorderLayout 6 CardLayout 7 GridBagLayout 8 注意:另外几个包中还有 ![]() ![]() ![]() ![]() ![]() ![]() ![]() 清单 3. AWT 提供了以下事件(大部分在 java.awt.events 包中) 1 Object 2 EventObject 3 AWTEvent 4 ActionEvent 5 AdjustmentEvent 6 ComponentEvent 7 ContainerEvent 8 FocusEvent 9 InputEvent 10 KeyEvent 11 MouseEvent 12 MouseWheelEvent 13 Pa ![]() 14 WindowEvent 15 HierarchyEvent 16 InputMethodEvent 17 InvocationEvent 18 ItemEvent 19 TextEvent 20 注意:其他几个包中还有另外 ![]() ![]() ![]() ![]() ![]() ![]() ![]() 通常对于 AWT 来说(也适用于 Swing 和 SWT) ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() AWT ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() AWT 组件是 “线程安全 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() AWT 让我们可以以自顶向下(top-down) 或自底向上(bottom-up) 或以任意组合顺序来构建 GUI ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 通常来说 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Sun 希望 Java 语言能够成为 ![]() ![]() 2 *Component 3 Container 4 *JComponent 5 *AbstractButton 6 JButton 7 JMenuItem 8 JCheckBonMenuItem 9 JMenu 10 JRadioButonMenuItem 11 *JToggleButton 12 JCheckBox 13 JRadioButton 14 Box 15 Filler 16 JColorChooser 17 JComboBox 18 JDesktopIcon 19 JFileChooser 20 JInternalFrame 21 JLabel 22 JLayeredPane 23 JDesktopPane 24 JList 25 JMenuBar 26 JOptionPane 27 JPanel 28 JPopupMenu 29 JProgressBar 30 JRootPane 31 JScrollBar 32 JScrollPane 33 JSeparator 34 JSlider 35 JSplitPane 36 JTabbedPane 37 JTable 38 JTableHeader 39 *JTextComponent 40 JEditorPane 41 FrameEditorPane 42 JTextPane 43 JTextArea 44 JtextField 45 JPasswordField 46 JToolBar 47 JToolTip 48 JTree 49 JViewport 50 ScrollableTabViewport 51 Panel 52 Applet 53 JApplet 54 Window 55 Dialog 56 JDialog 57 Frame 58 JFrame 59 JWindow 60 注意:在另外几个包中还有其他 ![]() ![]() ![]() ![]() 清单 5. Swing 提供了以下 LayoutManagers(全部在 javax.swing 包或其子包中 ![]() 1 *LayoutManager 2 CenterLayout 3 *LayoutManager2 4 BoxLayout 5 OverlayLayout 6 SpringLayout 7 注意:在另外几个包中还有其他 ![]() ![]() ![]() ![]() ![]() ![]() ![]() 清单 6. Swing 提供了以下事件(大部分在 javax.swing.events 包及其子包中) 1 Object 2 EventObject 3 AWTEvent 4 AncestorEvent 5 ComponentEvent 6 InputEvent 7 KeyEvent 8 MenuKeyEvent 9 MouseEvent 10 MenuDragMouseEvent 11 InternalFrameEvent 12 注意:在另外几个包中还有其他 ![]() ![]() ![]() ![]() ![]() ![]() ![]() 为了克服在区别主机上行为也会区别 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Swing 对基于对等体 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Swing 无法充分利用硬件 GUI 加速器和专用主机 GUI 操作 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 除了具有更多 ![]() ![]() ![]() ![]() ![]() 模型和视图和Control控件分离 对于这个模型中 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 可编程外观 每个组件 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 呈现器和编辑器 大部分显示模型内容 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 可访问性 创建 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 和 AWT ![]() ![]() ![]() ![]() ![]() ![]() ![]() 和 AWT 区别 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 和 AWT 类似 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 和 AWT ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() SWT 也是基于 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 在对等体工作方式上 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() SWT 部件、布局和事件整理总结如下(参见 清单 7、清单 8 和 清单 9) ![]() ![]() ![]() ![]() ![]() ![]() ![]() 清单 7. 基本 ![]() ![]() ![]() ![]() 1 Object 2 *Dialog 3 ColorDialog 4 DirectoryDialog 5 FileDialog 6 FontDialog 7 MessageDialog 8 Pr ![]() 9 *Widget 10 Menu 11 *Item 12 CoolItem 13 !CTabItem 14 MenuItem 15 TabItem 16 TableColumn 17 TableItem 18 TableTreeItem 19 ToolItem 20 TrayItem 21 TreeColumn 22 TreeItem 23 *Control 24 Button 25 Label 26 ProgressBar 27 Sash 28 Scale 29 Scrollable 30 Composite 31 ~Browser 32 Canvas 33 *~AbstractHyperlink 34 ~Hyperlink 35 ~ImageHyperlink 36 *~ToggleHyperline 37 ~TreeNode 38 ~Twistie 39 AnimatedProgress 40 !CLabel 41 Decorations 42 Shell 43 FormText 44 StyledText 45 TableCursor 46 !CBanner 47 !CCombo 48 Combo 49 CoolBar 50 !CTabFolder 51 ~ExpandableComposite 52 ~Section 53 ~FilteredList 54 ~FilteredTree 55 ~Form 56 Group 57 ~PageBook 58 ProgressIndicator 59 !SashForm 60 !ScrolledComposite 61 TabFolder 62 Table 63 TableTree 64 ToolBar 65 Tray 66 Tree 67 ViewForm 68 List 69 Text 70 Slider 71 注意:在另外几个包中还有其他 ![]() ![]() ![]() ![]() 和 AWT 和 Swing 布局管理器类似 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 清单 8. SWT 提供了以下布局管理器(大部分在 org.eclipse.swt.layout 和 org.eclipse.swt.custom 包或子包中 ![]() ![]() 1 *Layout 2 FillLayout 3 FormLayout 4 GridLayout 5 RowLayout 6 !StackLayout 7 注意:在另外几个包中还有其他 ![]() ![]() ![]() ![]() ![]() ![]() ![]() 和 AWT 和 Swing 事件系统 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 清单 9. SWT 提供了以下事件(大部分在 org.eclipse.swt.events 包或 org.eclipse.swt.custom 包或其子包中 ![]() ![]() 1 Object 2 EventObject 3 SWTEventObject 4 TypedEvent 5 AimEvent 6 !BidiSegmentEvent 7 ControlEvent 8 !CTabFlolderEvent 9 DisposeEvent 10 DragSourceEvent 11 DragTargetEvent 12 !ExtendedMod ![]() 13 focusEvent 14 HelpEvent 15 KeyEvent 16 TraverseEvent 17 Ver ![]() 18 !LineBackgroundEvent 19 !LineStyleEvent 20 MenuEvent 21 Mod ![]() 22 MouseEvent 23 Pa ![]() 24 SelectionEvent 25 TreeEvent 26 ShellEvent 27 !TextChangedEvent 28 !TextChangingEvent 29 注意:在另外几个包中还有其他 ![]() ![]() ![]() ![]() ![]() ![]() ![]() 很多 Swing 组件 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() SWT 不支持 GUI Control控件 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 使用 SWT 只能自顶向下地构建 GUI ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 和 Swing 类似 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 如果所支持 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() SWT 提供了 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 和 AWT 和 Swing 区别 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 下表对 AWT、SWT 和 Swing 库 ![]() ![]() ![]() ![]() ![]() ![]() 表 1. SWT 、AWT 和 Swing 特性 ![]() 功能/角色/外表 AWT Swing SWT(风格) 显示静态文本 Label JLabel Label, CLabel 显示多行静态文本 Multiple Labels 具有 HTML 内容 ![]() ![]() 显示多行格式化静态文本 具有区别字体 ![]() ![]() ![]() 单行文本输入 TextField JTextField Text(SWT.SINGLE) 多行文本输入 TextArea JTextArea Text(SWT.MULTI) 显示图像 N/A JLabel Label 显示文本和图像 N/A JLabel CLabel 提示弹出帮助 N/A 组件 ![]() ![]() ![]() ![]() ![]() 风格化 ![]() 从条目列表中进行选择 List JList List 简单按下具有文本 ![]() 简单按下具有文本或图像 ![]() 绘图区域;可能用于定制Control控件 Canvas JPanel Canvas 选中/取消复选框 CheckBox JCheckBox Button(SWT.CHECK) 单选按钮选择 CheckBoxGroup ButtonGroup 和 Menu Group 和 Menu 从 ![]() 输入文本或从下拉列表中选择 N/A JComboBox Combo、CCombo 可滚动区域 ScrollPane JScrollPane 创建 Scrollable 子类 顶层窗口 Dialog、Frame、Window JDialog、JFrame、JWindow 具有区别风格 ![]() 通用窗口 Window JWindow Shell 框架窗口 Frame JFrame Shell(SWT.SHELL_TRIM) 对话框窗口 Dialog JDialog Shell(SWT.DIALOG_TRIM) 菜单 Menu JMenu Menu MenuItem MenuItem JMenuItem MenuItem 菜单快捷键 通用击键 和 AWT 相同 依赖于主机 ![]() 弹出菜单 PopupMenu JPopupMenu Menu(SWT.POPUP) 菜单条 MenuBar JMenuBar Menu(SWT.BAR) 显示插入符号 N/A Caret Caret Web 浏览器 N/A JTextPane(HTML 3.2) Browser(通过嵌入式浏览器) Web 页面中 ![]() 其他Control控件 ![]() 其他Control控件 ![]() ![]() ![]() 其他Control控件 ![]() ![]() ![]() 单选按钮( ![]() 单选按钮 ![]() 箭头按钮 N/A 具有图像 ![]() 支持文本显示方向 通过 ComponentOrientation 和 AWT 相同 很多组件都可以支持这种风格 焦点切换 Policy 和 Manager 对象 和 AWT 相同 下 ![]() 定制对话框 Dialog 子类 JDialog 子类 Dialog 子类 访问系统事件 EventQueue 服务 和 AWT 相同 Display 服务(不如 AWT 健壮) 系统访问对话框 FileDialog JColorChooser、JFileChooser ColorDialog、DirectoryDialog、FileDialog、FontDialog、Pr ![]() 显示简单消息对话框 N/A(必须是 Dialog 子类) JOptionPane 静态思路方法 具有很多风格 ![]() 显示简单提示对话框 N/A(必须是 Dialog 子类) JOptionPane 静态思路方法 N/A(JFace 中用来实现这种功能 ![]() 布局管理器 BorderLayout、CardLayout、FlowLayout、GridLayout、GridBagLayout AWT 加上 BoxLayout、CenterLayout、SpringLayout FillLayout、FormLayout、GridLayout、RowLayout、StackLayout 基本 ![]() 基本绘图 Graphics 和 Graphics2D 对象 —— 基本形状和文本 ![]() 绘图转换 Affine ![]() 离屏绘图(Off screen drawing) BufferedImage、drawImage 和 AWT 相同 Image、drawImage 双缓冲区 手工 自动或手工 除非由主机Control控件提供 ![]() 打印 Pr ![]() ![]() ![]() 定制颜色 Color 和 AWT 相同 Color 定制字体 Font、FontMetrics 和 AWT 相同 Font 光标选择 Cursor 和 AWT 相同 Cursor 图像特性 从文件中加载 ![]() ![]() ![]() ![]() 输入自动化 Robot 和 AWT 相同 N/A 显示工具条 N/A JToolBar ToolBar、CoolBar 显示进度条 N/A JProgressBar ProgressBar 将空间划分成区域 N/A JSplitPane Sash 或 SashForm 显示 ![]() ![]() 显示制表信息 N/A JTable Table 格式化表 ![]() 显示层次化信息 N/A JTree Tree 从 ![]() ![]() 从 ![]() ![]() 对于基本显示 ![]() 将条目添加到系统托盘(system tray)中 N/A N/A Tray 关键:N/A —— 不适用 ![]() ![]() ![]() ![]() ![]() =atitle>结束语 本文对 Eclipse ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 在大部分情况中 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 如果您只为 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 0
相关文章
读者评论发表评论 |