快速业务通道

SWT、Swing或AWT:哪个更适合您? - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-14
有父容器,子控件也就不存在了;通常父容器都不能在以后任意改变。这种方法不如 AWT/Swing 灵活。控件是在创建时被添加到父容器中的,在销毁时被从父容器中删除的。而且 SWT 对于 style 位的使用只会在构建时进行,这限制了有些 GUI 控件的灵活性。有些风格只是一些提示性的,它们在所有平台上的行为可能并不完全相同。

与 Swing 类似,SWT 组件也不是线程安全的,这意味着您必须要关心在应用程序中是哪个线程对 GUI 进行了更新。如果在使用线程时发生了错误,就会抛出异常。我认为这比不确定的 Swing 方法要好。有一些工具可以帮助管理线程的问题。

如果所支持的操作系统提供了可访问性服务,那么 SWT GUI 通常也就具有很好的可访问性。当默认信息不够时,SWT 为程序员提供了一个基本的 API 来指定可访问性信息。

SWT 提供了一个有限的图形环境。到目前为止,它对于 Java2D 和 Java3D 的支持还不怎么好。Eclipse 使用一个名为 Draw2D 的组件提供了另外一种单独的图形编辑框架(Graphical Editing Framework,GEF),它可以用来创建一些绘图应用程序,例如 UML 建模工具。不幸的是,GEF 难以单独(即在整个 Eclipse 环境之外)使用。

与 AWT 和 Swing 不同,SWT 和 JFace 并不是 Java 技术的标准配置。它们必须单独进行安装,这可以当作是 Eclipse 安装的一部分,也可以当作是单独的库进行安装。Eclipse 小组已经使它的安装变得非常简单,并且 SWT 可以与 Eclipse 分开单独运行。所需要的 Java 档案文件(JAR)和动态链接库(DLL)以及 UNIX 和 Macintosh 上使用的类似库可以从 Eclipse Web 站点上单独下载。JFace 库需要您下载所有的 Eclipse 文件,并拷贝所需要的 JAR 文件。在下载所需要的文件之后,我们还需要将这些 JAR 文件放到 Java CLASSPATH 中,并将 DLL 文件放到系统 PATH 中。

SWT、Swing或AWT:哪个更适合您?(10)

时间:2011-12-08 ibm Barry Feigenbaum

特性的比较

下表对 AWT、SWT 和 Swing 库的很多特性进行了比较,这种比较并没有按照任何特定顺序来进行。尽管没有完全列出所有特性,但是列出了很多最重要的特性。

表 1. SWT 、AWT 和 Swing 特性的比较

功能/角色/外表 AWT Swing SWT(风格)
显示静态文本 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/A JSlider Slider
从一组离散范围的值中进行选择 N/A JSpinner Scale
对于基本显示的访问 Toolkit、GraphicsConfiguration、GraphicsDevice 与 AWT 相同 Display
将条目添加到系统托盘(system tray)中 N/A N/A Tray
关键:N/A —— 不适用。在很多情况中,这种特性都可以通过创建定制控件或控件容器或利用其他定制编程来实现,不过实现的难度会有所不同。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号