专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Java教程 » swtswing:SWT、Swing 或 AWT:哪个更适合您? »正文

swtswing:SWT、Swing 或 AWT:哪个更适合您?

来源: 发布时间:星期一, 2009年2月23日 浏览:0次 评论:0
Abstract Windows Toolkit(AWT)是最原始 Java GUI 工具包AWT 主要优点是它在 Java 技术每个版本上都成为了种标准配置包括早期 Web 浏览器中 Java 实现;另外它也非常稳定这意味着我们不需要单独安装这个工具包在任何个 Java 运行环境中都可以使用它点正是我们所希望特性   AWT 是个非常简单具有有限 GUI 组件、布局管理器和事件工具包(参见 清单 1、清单 2 和 清单 3)这是 Sun 公司决定为 AWT 使用种最小公分母(LCD)思路方法因此它只会使用为所有 Java 主机环境定义 GUI 组件最终结果非常不幸有些经常使用组件例如表、树、进度条等都不支持对于需要更多组件类型应用来说我们需要从头开始创建这些组件这是个很大负担

  清单 1. 基本 AWT Class 树(全部在 java.awt 包中 “*” 表示抽象)

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

  注意:另外几个包中还有其他些 AWT 组件但是这是基本组件集

  清单 2. AWT 提供了下面布局管理器(全部在 java.awt 包中“*” 表示接口)

1 *LayoutManager
2     FlowLayout
3     GridLayout
4     *LayoutManager2
5         BorderLayout
6         CardLayout
7         GridBagLayout
8

  注意:另外几个包中还有些 AWT 布局管理器很多都是为它们进行布局容器专门定制但是这是基本布局管理器集

  清单 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                 PaEvent
14                 WindowEvent
15             HierarchyEvent
16             InputMethodEvent
17             InvocationEvent
18             ItemEvent
19             TextEvent
20

  注意:其他几个包中还有另外些 AWT 事件但是这是基本事件集这些是从更通用事件生成具体事件

  通常对于 AWT 来说(也适用于 Swing 和 SWT)每个事件类型都有个相关 XxxListener 接口(XxxAdapter 实现可能为空)其中 Xxx 是去掉 Event 后缀事件名(例如KeyEvent 事件接口是 KeyListener)用来把事件传递给处理应用会为自己感兴趣处理事件事件源(GUI 组件或部件)进行注册有时监听接口要处理多个事件

  AWT 个很好特性是它通常可以对 GUI 组件自动进行销毁这意味着您几乎不需要对组件进行销毁个例外是高级组件例如对话框和框架如果您创建了耗费大量主机资源资源就需要手动对其进行销毁

  AWT 组件是 “线程安全(thread-safe)”这意味着我们不需要关心在应用中是哪个线程对 GUI 进行了更新这个特性可以减少很多 GUI 更新问题不过使 AWT GUI 运行速度更慢了

  AWT 让我们可以以自顶向下(top-down) 或自底向上(bottom-up) 或以任意组合顺序来构建 GUI自顶向下意思是在创建子组件的前首先创建容器组件;自底向上意思是在创建容器(或父)组件的前创建子组件在后种情况中组件存在并不依赖于父容器其父容器可以随时改变

  通常来说AWT GUI 都是不可访问系统并没有为 AWT 员提供 API 来指定可访问性信息可访问性(accessibility)处理是残疾人可以怎样使用应用问题个应用要想有很好可访问性必须和运行平台让残疾人可以通过使用适当辅助技术(提供其他用户接口工具)来使用这些应用很多政府和企业都有些强制要求应用为实现可访问性而采用标准

  Sun 希望 Java 语言能够成为种 “编写次就可以随处运行(write _disibledevent=> 1 Object
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

  注意:在另外几个包中还有其他些 Swing 组件但是这是基本组件集

  清单 5. Swing 提供了以下 LayoutManagers(全部在 javax.swing 包或其子包中“*” 表示接口)

1 *LayoutManager
2     CenterLayout
3     *LayoutManager2
4         BoxLayout
5         OverlayLayout
6         SpringLayout
7

  注意:在另外几个包中还有其他些 Swing 布局管理器很多都是为它们所布局容器而专门定制但是这是基本布局管理器集

  清单 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

  注意:在另外几个包中还有其他些 AWT 事件但是这是基本事件集这些是从更通用事件生成 “高级” 事件

  为了克服在区别主机上行为也会区别缺点Swing 将对主机Control控件依赖性降至了最低实际上Swing 只为诸如窗口和框架的类顶层 组件使用对等体大部分组件(JComponent 及其子类)都是使用纯 Java 代码来模拟这意味着 Swing 天生就可以在所有主机的间很好地进行移植因此Swing 通常看起来并不像是本地实际上它有很多外观有些模拟(尽管通常并不精确)区别主机外观有些则提供了独特外观

  Swing 对基于对等体组件使用术语是重量级(heavyweight)对于模拟组件使用术语是轻量级(lightweight)实际上Swing 可以支持在个 GUI 中混合使用重量级组件和轻量级组件例如在个 JContainer 中混合使用 AWT 和 Swing Control控件但是如果组件产生了重叠就必须注意绘制这些Control控件顺序

  Swing 无法充分利用硬件 GUI 加速器和专用主机 GUI 操作优点结果是 Swing 应用可能比本地 GUI 运行速度都慢Sun 花费了大量精力来改进最近版本 Swing (Java V1.4 和 1.5)性能这种缺点正在变得日益微弱由于 Swing 设计更加健壮因此其代码基础也更坚实这意味着它可以在台健壮机器上比 AWT 和 SWT 上运行得更好

  除了具有更多组件、布局管理器和事件的外Swing 还有很多特性使得自己比 AWT 功能更加强大下面是更为重要几个特性:

  模型和视图和Control控件分离

  对于这个模型中所有组件(例如按钮、列表、表、树、富文本)来说模型都是和组件分离这样可以根据应用需求来采用模型并在多个视图的间进行共享为了方便起见每个组件类型都提供有默认模型

  可编程外观

  每个组件外观(外表以及如何处理输入事件)都是由个单独、可动态替换实现来进行控制这样我们就可以改变基于 Swing GUI 部分或全部外观

  呈现器和编辑器

  大部分显示模型内容组件例如列表、表和树都可以处理几乎所有类型模型元素这可以通过为每种组件类型和模型类型映射个渲染器或编辑器来实现例如个具有包含 java.util.Date 值表可以有些专用代码来呈现数据值和编辑数据值列都可以有区别类型

  可访问性

  创建个残疾人可以访问 GUI 是非常重要Swing 为实现具有可访问性 GUI 提供了丰富基础设施和 API这种支持是单独但是如果主机上具有可访问性支持那么它们应该集成在

  和 AWT Swing 可以支持 GUI 组件自动销毁Swing 还可以支持 AWT 自底向上和自顶向下构建思路方法

  和 AWT 区别Swing 组件不是线程安全这意味着您需要关心在应用中是哪个线程在更新 GUI如果在使用线程时出现了就可能会出现不可预测行为包括用户界面故障些工具可以帮助管理线程问题

  和 AWT 类似Swing 个优点是它也是 Java 技术种标准配置这意味着您不需要自己来安装它了不幸Swing 已经有了很大变化因此它很容易变得依赖于最新版本 Java 语言所提供特性这可能会强制用户更新自己 Java 运行时环境

和 AWT 概念相比SWT 是个低级 GUI 工具包JFace 是组用来简化使用 SWT 构建 GUI 增强组件和工具服务SWT 构建者从 AWT 和 Swing 实现中学习了很多经验他们试图构建个集 2者优点于体而没有 2者缺点系统从很多方面来说他们已经成功了

  SWT 也是基于个对等体实现在这点上它和 AWT 非常类似它克服了 AWT 所面临 LCD 问题思路方法如下:定义了组Control控件它们可以用来构建大部分办公应用或开发者工具然后可以按照逐个主机原则为特定主机所没有提供Control控件创建模拟Control控件(这和 Swing 类似)对于大部分现代主机来说几乎所有Control控件都是基于本地对等体这意味着基于 SWT GUI 既具有主机外观又具有主机性能这样就避免了使用 AWT 和 Swing 而引起大部分问题特定主机具有些低级功能Control控件因此 SWT 提供了扩充(通常是模拟)版本(通常使用 “C” 作为名字中个字母)从而可以产生更行为

  在对等体工作方式上SWT 和 AWT 区别在 SWT 中对等体只是主机Control控件上些封装而已在 AWT 中对等体可以提供服务来最小化主机的间差异(就是在这里AWT 碰到了很多行为不问题)这意味着 SWT 应用实际上就是个主机应用它必然会全部继承主机优点和缺点这还意味着 SWT 不能完全实现 WORE 目标;它更像是种 WOTE 解决方案这就是说SWT 尽管不如 Swing 那么优秀但是它在创建可移植解决方案方面是很杰出

  SWT 部件、布局和事件整理总结如下(参见 清单 7、清单 8 和 清单 9)正如您可以看到这些组件集比 AWT 提供组件集更为广泛和 Swing 组件集相比也毫不逊色

  清单 7. 基本 SWT Class 树(大部分在 org.ecipse.swt.widgets 或 org.eclipse.swt.custom 包或子包中“*” 表示抽象类“!” 表示在 custom 包中“~” 表示在其他包中)

1 Object
2     *Dialog
3          ColorDialog
4          DirectoryDialog
5          FileDialog
6          FontDialog
7          MessageDialog
8          PrDialog
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

  注意:在另外几个包中还有其他些 SWT 部件但是这是基本部件集

  和 AWT 和 Swing 布局管理器类似SWT 也提供了非常丰富布局部件集布局系统和嵌套容器起使用可以生成所需要任何布局算法所有这 3 个 GUI 库也可以支持对部件定位实现绝对控制SWT 没有等效 BorderLayout 部件点非常令人失望FormLayout 对于创建表单基本输入来说非常好用我认为 SWT 布局机制比 AWT/Swing 布局部件集使用更难学习

  清单 8. SWT 提供了以下布局管理器(大部分在 org.eclipse.swt.layout 和 org.eclipse.swt.custom 包或子包中“*” 表示接口“!” 表示在 custom 包中)

1 *Layout
2     FillLayout
3     FormLayout
4     GridLayout
5     RowLayout
6     !StackLayout
7

  注意:在另外几个包中还有其他些 SWT 布局管理器很多都是为它们所布局容器而专门定制但是这是基本布局管理器集

  和 AWT 和 Swing 事件系统SWT 提供了非常丰富事件集尽管这些事件并不能和 AWT/Swing 事件对应(例如 AWT 和 Swing 按钮都会产生 ActionEvent 事件而 SWT 按钮产生则是 SelectionEvent 事件)但是它们通常都是等价

  清单 9. SWT 提供了以下事件(大部分在 org.eclipse.swt.events 包或 org.eclipse.swt.custom 包或其子包中“*” 表示抽象“!” 表示在 custom 包中)

1 Object
2     EventObject
3         SWTEventObject
4             TypedEvent
5                 AimEvent
6                 !BidiSegmentEvent
7                 ControlEvent
8                 !CTabFlolderEvent
9                 DisposeEvent
10                 DragSourceEvent
11                 DragTargetEvent
12                 !ExtendedModyEvent
13                 focusEvent
14                 HelpEvent
15                 KeyEvent
16                     TraverseEvent
17                     VeryEvent
18                 !LineBackgroundEvent
19                 !LineStyleEvent
20                 MenuEvent
21                 ModyEvent
22                 MouseEvent
23                 PaEvent
24                 SelectionEvent
25                     TreeEvent
26                 ShellEvent
27                 !TextChangedEvent
28                 !TextChangingEvent
29

  注意:在另外几个包中还有其他些 SWT 事件但是这是基本事件集这些是从更通用事件生成具体事件

  很多 Swing 组件例如 JTable都有自己模型对应 SWT Control控件(例如 Table)则没有;不过它们有自己条目条目通常用来限制显示文本或通常很小图像(例如图标)为了提供种类 Swing 模型接口SWT 使用了 JFace ContentProviders这些组件可以在应用提供模型(例如 List 或 Table 使用 java.util.Array )和用作视图Control控件的间充当个桥梁为了将任意模型对象格式化成条目SWT 使用了 JFace LabelProviders它们可以为任何模型对象生成个文本或图标格式这可以对复杂模型对象混合显示进行限制其他类似组件例如 ColorProviders 和 LabelDecorators可以增强对这些条目显示对于 Tables 特例来说SWT 提供了 CellEditor它可以临时将任意 SWT Control控件链接到个 Table 单元格上从而当作这个单元格编辑器使用

  SWT 不支持 GUI Control控件自动销毁这意味着我们必须显式地销毁所创建任何Control控件和资源例如颜色和字体而不能利用 API 来实现这种功能这种工作从某种程度上来说得到了简化容器控制了其子Control控件自动销毁功能

  使用 SWT 只能自顶向下地构建 GUI因此如果没有父容器子Control控件也就不存在了;通常父容器都不能在以后任意改变这种思路方法不如 AWT/Swing 灵活Control控件是在创建时被添加到父容器中在销毁时被从父容器中删除而且 SWT 对于 style 位使用只会在构建时进行这限制了有些 GUI Control控件灵活性有些风格只是些提示性它们在所有平台上行为可能并不完全相同

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

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

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

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

下表对 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 组件 ToolTipJToolTip 子类 Control控件 ToolTip
风格化文本输入 N/A JEditorPane StyledText
从条目列表中进行选择 List JList List
简单按下具有文本按钮 Button JButton Button(SWT.PUSH)
简单按下具有文本或图像按钮 N/A JButton Button(SWT.PUSH)
绘图区域;可能用于定制Control控件 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 页面中嵌入式Control控件 Applet JApplet 主机Control控件(例如 OLE)
其他Control控件通用容器 Panel JPanel Composite
其他Control控件有边界通用容器 Panel(如果是手工画) 具有 Border JPanel Composite(SWT.BORDER)
其他Control控件有边界和标题通用容器 N/A 具有 TitledBorder JPanel Group
单选按钮(个被选中) Checkbox JRadioButton Button(SWT.RADIO)
单选按钮Control控件扩充 CheckboxGroup RadioButtonGroup Group
箭头按钮 N/A 具有图像 JButton Button(SWT.ARROW)
支持文本显示方向 通过 ComponentOrientation 和 AWT 相同 很多组件都可以支持这种风格
焦点切换 Policy 和 Manager 对象 和 AWT 相同 下个Control控件
定制对话框 Dialog 子类 JDialog 子类 Dialog 子类
访问系统事件 EventQueue 服务 和 AWT 相同 Display 服务(不如 AWT 健壮)
系统访问对话框 FileDialog JColorChooser、JFileChooser ColorDialog、DirectoryDialog、FileDialog、FontDialog、PrDialog
显示简单消息对话框 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
基本绘图Control控件 Canvas JPanel Canvas
基本绘图 Graphics 和 Graphics2D 对象 —— 基本形状和文本任意 Shapes 和 Strokes、Bezier 以及文件 和 AWT 相同 GC 对象 —— 基本形状和文本
绘图转换 Affine合成 和 AWT 相同 N/A
离屏绘图(Off screen drawing) BufferedImage、drawImage 和 AWT 相同 Image、drawImage
双缓冲区 手工 自动或手工 除非由主机Control控件提供否则就是手工
打印 PrJob 和 PrGraphics 和 AWT 相同 向 Prer 设备绘图
定制颜色 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 —— 不适用在很多情况中这种特性都可以通过创建定制Control控件或Control控件容器或利用其他定制编程来实现不过实现难度会有所区别



=atitle>结束语

        本文对 Eclipse Standard Windows Toolkit with JFace、Java Swing 和 Abstract Windows Toolkit GUI 工具包进行了比较通过此处提供比较您可以确定在自己新应用中应该使用哪个 GUI 工具包

        在大部分情况中决定都是在 Swing 和结合了 JFace SWT 的间进行通常来说每个工具包都非常完整且功能强大足以构建功能完善 GUI但是 Swing 通常要比单独使用 SWT(不使用 JFace 时)更好Swing 具有内嵌于 Java 技术优点是完全可移植无可争议地是种更好架构Swing 也具有高级图形应用所需要优点SWT 具有可以作为本地应用实现优点这可以提高性能并利用基于 SWT GUI 来实现本地兼容性

         如果您只为种平台来开发系统那么 SWT 就具有主机兼容性方面优点包括和主机特性集成例如在 Windows 上对 ActiveX Control控件使用

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: