文章目录
- 关于 AWT
- AWT继承体系
- 关于 Swing
- 关于 JFC 和 Swing
- Swing 组件
- 组件层次
- Swing组件和AWT组件的对应关系:
- Swing组件按照功能来分类:
Java使用AWT和Swing相关的类可以完成图形化界面编程,其中AWT的全称是抽象窗口工具集(Abstract Window Toolkit),它是sun公司最早提供的GUI库,这个GUI库提供了一些基本功能,但这个GUI库的功能比较有限,所以后来sun公司又提供了Swing库。
关于 AWT
- 官网:https://docs.oracle.com/javase/8/docs/technotes/guides/awt/index.html
- api : https://docs.oracle.com/javase/8/docs/api/overview-summary.html
https://docs.oracle.com/javase/8/docs/api/java/awt/package-summary.html
AWT : The Abstract Window Toolkit
当 JDK 1.0发布时, Sun 提供了 一套基本的GUI类库,这个GUI类库希望可以在所有平台下都能运行 , 这套基本类库被称为"抽象窗口工具集 Abstract Window Toolkit )",它为Java应用程序提供了基本的图形组件 。
AWT是窗口框架,它从不同平台的窗口系统中抽取出共同组件 , 当程序运行时,将这些组件的创建和动作委托给程序所在的运行平台 。
简而言之 ,当使用 AWT 编写图形界面应用 时, 程序仅指定了界面组件的位置和行为,并未提供真正的实现,JVM调用操作系统本地的图形界面来创建和平台 一致的对等体 。
使用AWT创建的图形界面应用和所在的运行平台有相同的界面风格 , 比如在 Windows 操作系统上,它就表现出 Windows 风格 ; 在 UNIX 操作系统上,它就表现出UNIX 风格 。 Sun 希望采用这种方式来实现 " Write Once, Run Anywhere " 的目标 。
AWT继承体系
所有和 AWT 编程相关的类都放在 java.awt 包以及它的子包中, AWT 编程中有两个基类 :Component和 MenuComponent。
- Component:代表一个能以图形化方式显示出来,并可与用户交互的对象,例如 Button 代表一个按钮,TextField 代表 一个文本框等;
- MenuComponent:则代表图形界面的菜单组件,包括 MenuBar (菜单条)、 Menultem (菜单项)等子类。
其中 Container 是一种特殊的 Component,它代表一种容器,可以盛装普通的 Component。
AWT中还有一个非常重要的接口叫LayoutManager ,如果一个容器中有多个组件,那么容器就需要使用LayoutManager来管理这些组件的布局方式。
关于 Swing
- 官方说明:https://docs.oracle.com/javase/8/docs/technotes/guides/swing/
- api : https://docs.oracle.com/javase/8/docs/api/overview-summary.html
- 官方教程:https://docs.oracle.com/javase/tutorial/uiswing/index.html
教程
- 黑马程序员:Java AWT Swing(图形界面编程)全套教程
https://www.bilibili.com/video/BV1wh411d7it/
实际使用 Java 开发图形界面程序时 ,很少使用 AWT 组件,绝大部分时候都是用 Swing 组件开发的 。
Swing是由100%纯 Java实现的,不再依赖于本地平台的 GUI, 因此可以在所有平台上都保持相同的界面外观。(所以导致 Swing 图形界面的显示速度要比 AWT 图形界面的显示速度慢一些,但相对于快速发展的硬件设施而言,这种微小的速度差别无妨大碍。)
独立于本地平台的Swing组件被称为轻量级组件;而依赖于本地平台的 AWT 组件被称为**重量级组件
关于 JFC 和 Swing
JFC 是 Java 基础类的缩写,它包含一组用于构建图形用户界面 (GUI) 以及向 Java 应用程序添加丰富的图形功能和交互性的功能。它被定义为包含下表所示的功能。
特征 | 描述 |
---|---|
Swing GUI 组件 | 包括从按钮到分割窗格再到表格的所有内容。许多组件都能够进行排序、打印和拖放,仅举几个受支持的功能。 |
可插拔的外观支持 | Swing 应用程序的外观和感觉是可插入的,允许选择外观和感觉。例如,同一个程序可以使用 Java 或 Windows 外观。此外,Java 平台支持 GTK+ 外观,这使得数百种现有外观可供 Swing 程序使用。可以从各种来源获得更多外观包。 |
辅助功能 API | 支持屏幕阅读器和盲文显示器等辅助技术从用户界面获取信息。 |
Java 2D API | 使开发人员能够轻松地将高质量的 2D 图形、文本和图像合并到应用程序和小程序中。 Java 2D 包括广泛的 API,用于生成高质量输出并将其发送到打印设备。 |
国际化 | 允许开发人员构建可以使用世界各地的用户以自己的语言和文化习俗进行交互的应用程序。借助输入法框架,开发人员可以构建接受使用数千种不同字符的语言(例如日语、中文或韩语)文本的应用程序。 |
Swing 组件
组件层次
大部分Swing 组件都是 JComponent抽象类的直接或间接子类(并不是全部的 Swing 组件),JComponent 类定义了所有子类组件的通用方法 ,JComponent 类是 AWT 里 java.awt. Container 类的子类 ,这也是 AWT 和 Swing 的联系之一。
绝大部分 Swing 组件类继承了 Container类,所以Swing 组件都可作为 容器使用 ( JFrame继承了Frame 类)。
Swing组件和AWT组件的对应关系:
大部分情况下,只需要在AWT组件的名称前面加个J,就可以得到其对应的Swing组件名称,但有几个例外:
- JComboBox: 对应于 AWT 里的 Choice 组件,但比 Choice 组件功能更丰富 。
- JFileChooser: 对应于 AWT 里的 FileDialog 组件 。
- JScrollBar: 对应于 AWT 里的 Scrollbar 组件,注意两个组件类名中 b 字母的大小写差别。
- JCheckBox : 对应于 AWT 里的 Checkbox 组件, 注意两个组件类名中 b 字母的大小 写差别 。
- JCheckBoxMenultem: 对应于 AWT 里的 CheckboxMenuItem 组件,注意两个组件类名中 b字母的大小写差别。
Swing组件按照功能来分类:
- 顶层容器: JFrame、JApplet、JDialog 和 JWindow 。
- 中间容器: JPanel 、 JScrollPane 、 JSplitPane 、 JToolBar 等 。
- 特殊容器:在用户界面上具有特殊作用的中间容器,如 JIntemalFrame 、 JRootPane 、 JLayeredPane和 JDestopPane 等 。
- 基本组件 : 实现人机交互的组件,如 JButton、 JComboBox 、 JList、 JMenu、 JSlider 等 。
- 不可编辑信息的显示组件:向用户显示不可编辑信息的组件,如JLabel 、 JProgressBar 和 JToolTip等。
- 可编辑信息的显示组件:向用户显示能被编辑的格式化信息的组件,如 JTable 、 JTextArea 和JTextField 等 。
- 特殊对话框组件:可以直接产生特殊对话框的组件 , 如 JColorChooser 和 JFileChooser 等。
2024-04-22(一) 阴晴不定