AWT与Swing
使用区别
使用Swing组件创建程序是因为它比AWT更为专业,而且Swing提供了更多的附加元素。比如说,通过Swing的JEditorPane组件可以在Java程序中使用HTML格式文本。而AWT实现同样功能不但困难,而且要花费相当多的时间。
Swing并不一定能使程序更容易床加你,但是可以使程序更加美观,而且容易在其他平台上运行。Swing组件一般比AWT组件强大得多。
AWT类分为两部分。一部分可以安全的混入Swing类(如表Ⅰ);另一部分要用Swing的等价类对其替换(如表Ⅱ)。
表Ⅰ 可以与swing安全共存的AWT组件
类型
|
特殊类
|
所有现有的布局管理器
|
BorderLayout,CardLayout,FlowLayout,GridLayout,GridBagLayout
|
Java.awt.event包中所有的事件、监听器和适配器
|
ActionEvent,ActionListener,WindowEvent.WindowListener,WindowAdapter等
|
所有非GUI存储容器
|
Dimension,Insects,Point,Polygon,Rectangle
|
提供访问系统资源的类
|
Color,Cursor,Font,FontMetrics,SystemColor和Toolkit
|
与图像相关的类
|
Graphics,Graphics2D,Image,MediaTracker
|
表Ⅱ AWT类和Swing相对应的组件
AWT组件
|
Swing组件
|
备注
|
Applet
|
JApplet
|
不使用add()方法而是用
getContentPane().add;
JApplet是javax.swing包下的类
|
Button
|
JButton
|
代码兼容
|
Canvas
|
JPanel或JLabel
|
用paintComponent取代paint(),JPanel和JLabel已经有了双缓冲
|
Checkbox
|
JCheckbox或JRadioButton
|
代码兼容
|
CheckboxGroup
|
取代ButtonGroup
|
ButtonGroup可以组合检查框、单选按钮和按钮
|
CheckboxMenuItem
|
JCheckboxMenuItem
和JRadioButtonMenuItem
|
代码兼容
|
Choice
|
JComboBox
|
项目的加入不同
|
Component
|
JComponent
|
一般不直接使用
|
Dialog
|
JDialog or,JOptionPane
|
不使用add方法而使用getContentPane().add
|
FileDialog
|
JFileChooser
|
不同
|
Frame
|
JFrame
|
不使用add方法而使用getContentPane().add
|
Label
|
JLabel
|
代码兼容
|
List
|
JList
|
列表需要独立的scroll pane和数据模型
|
Menu,MenuBar,
MenuItem,PopupMenu
|
JMenu,JMenuBar,JMenuItem,
JPopupMenu,JSeparator
和JPopupMenu.Separator
|
代码兼容,但是separators是独立的类,不是成员变量
|
Panel
|
JPanel
|
代码兼容
|
Scrollbar
|
JScrollBar或JSlider或JProgressBar
|
取决于所使用的类
|
ScrollPane
|
JScrollPane
|
代码兼容
|
TextArea
|
JTextArea
|
必须手工加载scrollbars,事件监听器不同
|
TextComponent
|
JTextComponent
|
不直接使用
|
TextField
|
JTextFiled
|
代码兼容
|
Window
|
JWindow
|
代码兼容,不常用
|
使用Swing编程需要注意:
1. 不要再一个程序中混合使用Swing和AWT GUI组件。原则上他们可以共存,但是可能会发生无法预料的情况。在使用GUI构件时,只用Swing组件可以减少问题发生。至少,应在最高层的容器中使用如JFrame或JApplet等Swing组件。然而,在Swing类中混合使用非GUI的AWT类不会引起任何问题。
2. 尽管AWT组件是线程安全的,但Swing GUI组件却不是。如果创建的程序的GUI元素要用到线程操作,就需要使用自己设置的同步机制。如当程序中使用线程操作一个列表的表项时,若用户也在做同样的事,这是必须执行同步机制,以避免破坏列表的完整性。
分享到:
相关推荐
通过`java图形编程1-AWT.chm`和`java图形编程2-Swing.chm`这两个文档,你可以深入学习AWT和Swing的使用方法,了解组件的创建、布局管理、事件处理、模型-视图-控制器模式,以及如何利用Swing的高级功能来构建复杂的...
### AWT与Swing的关系及区别 在Java图形用户界面(GUI)开发中,AWT(Abstract Window Toolkit)和Swing是两个非常重要的组件库,它们都为开发者提供了创建跨平台应用程序的能力。本文将深入探讨AWT与Swing之间的...
Java AWT 和 Swing 是两种用于...通过这个项目,开发者可以深入理解Java GUI编程,掌握AWT和Swing组件的使用,以及如何处理用户事件和执行计算逻辑。这对于学习Java图形用户界面开发和软件工程的基本原则非常有帮助。
#### 一、AWT与Swing概述 AWT(Abstract Window Toolkit)和Swing是Java中用于构建图形用户界面(GUI)的两个重要工具包。AWT是由Sun Microsystems开发的第一代GUI库,而Swing则是建立在AWT基础上的一个更高层次的...
#### 三、AWT与Swing的关键区别 1. **性能与速度**:AWT依赖于本地方法,运行速度通常较快;而Swing由于完全使用Java代码实现,运行速度相对较慢,尤其是在复杂界面的渲染上。 2. **跨平台性**:Swing通过纯Java...
本项目"使用Java AWT和Swing实现的简单计算器"展示了如何利用这两个库创建一个基本的计算器应用。下面将详细探讨相关知识点。 1. **Java AWT**: AWT是Java最早的GUI库,它提供了与操作系统直接交互的基础组件,如...
使用文本方式(控制台输入输出)和使用图形方式(可以使用AWT或者SWING)来实现猜数游戏。 进入程序后,显示文本内容,提示用户输入1-100之间的数字,然后程序对其进行判断,用户根据系统提供的提示信息继续猜,...
本文将详细探讨AWT和Swing的区别,并提供代码示例来展示它们的使用。 尽管AWT是Java GUI编程的起点,但Swing由于其独立于平台、更好的性能和更丰富的组件集,已成为Java GUI开发的主流选择。理解AWT和Swing的区别...
本篇文章将详细介绍如何在Eclipse中使用AWT和Swing进行界面化开发。 首先,AWT是Java最早提供的GUI库,它提供了基本的窗口组件,如按钮、文本框等。AWT组件与操作系统紧密集成,因此具有较好的性能和平台一致性。...
Java 计算器源代码 awt+swing 图形界面是一款使用 Java 语言开发的图形化计算器应用程序,采用了 AWT 和 Swing 库来实现图形用户界面。下面是该计算器的主要知识点: 1. AWT 和 Swing 库:AWT(Abstract Window ...
在本实验报告中,主题是“Java实验报告之图形用户界面程序设计与AWT/Swing组件”,主要目标是让学生熟悉Java GUI设计原理、程序结构,掌握AWT和Swing组件的功能,以及学会应用这些组件来设计应用程序,特别是实现一...
在Java编程领域,AWT(Abstract Window Toolkit)和Swing是两种主要的GUI(图形用户界面)库。它们允许开发者创建交互式的桌面应用程序。Eclipse作为一款强大的集成开发环境(IDE),提供了丰富的插件支持,其中包括...
100多个实例源码,学习awt、swing。AWT和Swing都是java中的包。 AWT(Abstract Window Toolkit):抽象窗口工具包,早期编写图形界面应用程序的包。 Swing :为解决 AWT 存在的问题而新开发的图形界面包。Swing是对...
这篇文章将详细探讨如何在SWT环境中集成并使用AWT和SWING组件。 首先,SWT是Eclipse的原生GUI库,它提供了与操作系统更紧密的集成,因此可以创建更原生的外观和感觉。然而,AWT和SWING提供了更多的组件和功能,例如...
在Java编程语言中,我们可以使用AWT(Abstract Window Toolkit)或Swing库来实现这个游戏。这两个库是Java GUI(图形用户界面)开发的核心组件,它们提供了丰富的组件和接口,帮助开发者创建桌面应用程序。 AWT是...
Swing组件被称为重量级组件,因为它们是建立在AWT组件之上,使用了Java自己的图形绘制机制,而不是依赖操作系统。Swing提供了一个更丰富的组件集合,包括一些AWT没有的组件,如JTable、JTree和JTabbedPane等。Swing...
使用原生的java awt、Swing进行窗口式开发 将素材文件夹放在D:\Game路径下 两个工程直接导入Eclipse,即可运行, ps:一个工程运行两次也可以,需要注意端口号,代码默认如果连接的端口号是3003,则监听3004端口,...
运用面向对象编程,继承、封装和多态等,Java语言的基本语法,Java IO;多线程编程,网络编程,序列化,反射,程序国际化;基本的界面编程(AWT和Swing)等基础知识。是学习java基础的一个极好案例。