SWT、Swing 或 AWT:哪个更适合您?(转载)
SWT、Swing 或 AWT:哪个更适合您?
在为新应用程序选择 GUI 工具包时应该考虑哪些因素?
功能/角色/外表AWTSwingSWT(风格)显示静态文本 Label JLabel Label, CLabel 显示多行静态文本 Multiple Labels 具有 HTML 内容的 Multiple JLabels 或 JLabel 具有新行的 Multiple Labels 或 Label 显示多行格式化静态文本 具有不同字体的 Multiple Labels 具有 HTML 内容的 JLabel 具有不同字体的 Multiple Labels 单行文本输入 TextField JTextField Text(SWT.SINGLE) 多行文本输入 TextArea JTextArea Text(SWT.MULTI) 显示图像 N/A JLabel Label 显示文本和图像 N/A JLabel CLabel 提示弹出帮助 N/A 组件的 setToolTip,JToolTip 子类 控件的 setToolTip 风格化的文本输入 N/A JEditorPane StyledText 从条目列表中进行选择 List JList List 简单按下具有文本的按钮 Button JButton Button(SWT.PUSH) 简单按下具有文本或图像的按钮 N/A JButton Button(SWT.PUSH) 绘图区域;可能用于定制控件 Canvas JPanel Canvas 选中/取消复选框 CheckBox JCheckBox Button(SWT.CHECK) 单选按钮选择CheckBoxGroup ButtonGroup 和 Menu Group 和 Menu 从一个下拉列表中选择 Choice JComboBox Combo、CCombo 输入文本或从下拉列表中选择 N/A JComboBox Combo、CCombo 可滚动区域 ScrollPane JScrollPane 创建 Scrollable 子类 顶层窗口 Dialog、Frame、Window JDialog、JFrame、JWindow 具有不同风格的 Shell 通用窗口 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 页面中的嵌入式控件 Applet JApplet 主机控件(例如 OLE) 其他控件的通用容器 Panel JPanel Composite 其他控件的有边界通用容器 Panel(如果是手工画的) 具有 Border 的 JPanel Composite(SWT.BORDER) 其他控件的有边界和标题的通用容器 N/A 具有 TitledBorder 的 JPanel Group 单选按钮(一个被选中) Checkbox JRadioButton Button(SWT.RADIO) 单选按钮的控件扩充 CheckboxGroup RadioButtonGroup Group 箭头按钮 N/A 具有图像的 JButton Button(SWT.ARROW) 支持文本显示方向 通过 ComponentOrientation 与 AWT 相同 很多组件都可以支持这种风格 焦点切换 Policy 和 Manager 对象 与 AWT 相同 下一个控件 定制对话框 Dialog 子类 JDialog 子类 Dialog 子类 访问系统事件 EventQueue 服务 与 AWT 相同 Display 服务(不如 AWT 健壮) 系统访问对话框 FileDialog JColorChooser、JFileChooser ColorDialog、DirectoryDialog、FileDialog、FontDialog、PrintDialog 显示简单消息对话框 N/A(必须是 Dialog 子类) JOptionPane 静态方法 具有很多风格的 MessageBox 显示简单提示对话框 N/A(必须是 Dialog 子类) JOptionPane 静态方法 N/A(JFace 中用来实现这种功能的子类) 布局管理器 BorderLayout、CardLayout、FlowLayout、GridLayout、GridBagLayout AWT 加上 BoxLayout、CenterLayout、SpringLayout FillLayout、FormLayout、GridLayout、RowLayout、StackLayout 基本的绘图控件 Canvas JPanel Canvas 基本绘图 Graphics 和 Graphics2D 对象 —— 基本形状和文本,任意 Shapes 和 Strokes、Bezier 以及文件 与 AWT 相同 GC 对象 —— 基本形状和文本 绘图转换 Affine,合成 与 AWT 相同 N/A 离屏绘图(Off screen drawing) BufferedImage、drawImage 与 AWT 相同 Image、drawImage 双缓冲区 手工 自动或手工 除非由主机控件提供,否则就是手工 打印 PrintJob 和 PrintGraphics 与 AWT 相同 向 Printer 设备绘图 定制颜色 Color 与 AWT 相同 Color 定制字体 Font、FontMetrics 与 AWT 相同 Font 光标选择 Cursor 与 AWT 相同 Cursor 图像特性 从文件中加载,动态创建,可扩充地编辑 与 AWT 相同 从文件中加载,动态创建,基本编辑 输入自动化 Robot 与 AWT 相同 N/A 显示工具条 N/A JToolBar ToolBar、CoolBar 显示进度条 N/A JProgressBar ProgressBar 将空间划分成区域 N/A JSplitPane Sash 或 SashForm 显示一个分标签页的区域 N/A JTabbedPane TabFolder、CTabFolder 显示制表信息 N/A JTable Table 格式化表的列 N/A TableColumn TableColumn 显示层次化信息 N/A JTree Tree 从一定范围的值中进行选择N/AJSliderSlider从一组离散范围的值中进行选择N/AJSpinnerScale对于基本显示的访问Toolkit、GraphicsConfiguration、GraphicsDevice与 AWT 相同Display将条目添加到系统托盘(system tray)中N/AN/ATray关键:N/A —— 不适用。在很多情况中,这种特性都可以通过创建定制控件或控件容器或利用其他定制编程来实现,不过实现的难度会有所不同。Barry Feigenbaum 博士是 IBM Worldwide Accessibility Center 的成员,该中心协助 IBM 使其产品可供残障人士使用。Feigenbaum 博士已经发表了几本书籍和文章,他拥有多项专利,并在诸如 JavaOne 之类的业界会议上发表演讲。他曾担任位于奥斯汀的得克萨斯大学(University of Texas)和其他学校的计算机科学系的助理教授。
?
转自: http://www.ibm.com/developerworks/cn/opensource/os-swingswt/#resources