当前课程知识点:Java程序设计 > 第七章 图形用户界面 > 7.2-Swing基础 > Swing基础
大家好 欢迎回来继续学习
JAVA语言程序设计
这一节我们来
简单了解一下Swing
在前面的小节中我们了解了
如何在窗口中
绘制简单的图形
但是大家应该想象得到
总不能我们去用
那些窗口 菜单 按纽等等
这些图形用户界面的组件的时候
我们都一个个去画吧
那效率太低了
实际上凡是支持GUI的
这样的语言
一般来说都为程序员
准备好了这些组件
我们可以从库里面
直接拿来用就行了
JAVA也是这样
那么Swing就是这样一个包
让我们可以直接去使用
它里面预定义好的这些组件
实际上我们的这个JFrame
也就是主窗口
还有JApplet
也都是Swing里面的组件
在具体了解Swing之前
我们要看看Swing
它处在什么地方 什么位置
这样的话就不得不提一下
这个JAVA基础类库 JFC
java Foundation Classes
这个JFC它是关于GUI组件
和服务的一个完整的集合
它主要会包括像AWT
java2D Accessibility
Drag Drop
还有Swing这些部分
那么Swing可以说
是JFC的一部分
它主要是提供按钮
窗口 表格等等这些控件
而且Swing里面的
绝大多数的组件
它是纯JAVA的组件
也就是完全用JAVA语言写的
在Swing出现之前
就已经有这么一个包
是为我们提供
图形用户界面组件的
这就是AWT包
但是AWT它里面提供的组件
都是重量级的
大多数都含有本地的代码
Swing组件是在AWT的
基础之上扩展而来的
注意是扩展 而不是取代
Swing组件的名称前面
都有一个J
它都是在原来
AWT组件的名称前面
加了这么一个J
比如说AWT里有Button
那么Swing组件里面
就有个JButton 代表按钮
另外后面我们要见到的
JCheckBox JScrollbar等等
那么它们都是
JComponent的子类
Swing组件就是
完全用JAVA语言编写的了
它的外观和功能
就不依赖于任何
由宿主平台的窗口系统
所提供的代码
所以我们也叫
它是轻量级的组件
当然了Swing里面
也有少量的重量级的组件
后面我们会学到
就是它的顶级容器
应该依然是重量级的组件
那么Swing的组件
可以为用户提供
更丰富的视觉感受
接下来我们就来看看
怎么样在Application
和Applet里面
使用Swing的组件
如果要在Applet里面
使用Swing组件的话
我们就需要将这些组件
加载到Applet顶级容器上面去
如果说要在一个本地应用程序中
一个Application中
使用Swing组件
同样我们要设法
将Swing加载到这个
整个的顶级容器上面去
现在我们就来看一下
在Applet中
怎么去使用Swing组件
也就是说我们怎么将
这个Swing的组件
放到Applet的显示区域中去
当然对于这些具体的组件类型
我们还没有做详细的介绍
但是没有关系
通过这个例子
我们也可以大致就了解了
像这个Button Label
它们的使用其实也挺简单的
还有就是关于事件监听器
我们也没有详细介绍呢
这个例子只是先给我们一个
基本的感觉 好
现在我们来看
这是一个Applet类
它继承了JApplet
那么当一个Applet启动的时候
它的init方法首先就要被调用
所以我们将这些添加组件的功能
都放在init方法里面了
首先我们需要去获取
一个ContentPane
是一个Applet里面的内容面板
顶级的内容面板
然后在这里面要设计一下布局
这意思就是说
如果说我们把组件放到这个
ContentPane里面去的话
按照什么样的布局来放呢
在JAVA里面有一些
预定义好的布局
像GridLayout就是一种
关于布局也在后面会详细介绍
好 接下来我们就要去构造
一个组件对象
构造一个JButton
这是一个按纽
按纽上面有一个标题
写着Click me
然后再构造一个JLabel
label是显示文本的
这么一个组件
然后我们将这个
button和label
都添加到ContentPane上面去
添加上去以后
我们如果去点击button的话
那我们希望能有点反应
我们点了一个按纽
有什么反应呢
这个就要注册事件监听器
所以在这我们要调用的
这个ActionListener
去注册一下事件监听器
那么这个用的是什么办法呢
这个事件监听器
是用了一个匿名的内部类
这个在这一章的
稍候也会给大家做详细介绍
现在大家只是简要的了解一下
在这里面注册了一个
对按纽能够进行响应的功能
比如说你点了一下按纽以后
那么在这里面就要有一些响应
什么响应呢
showInputDialog
它就会显示一个输入对话框
请你输入一串字符
那么这个字符输进去以后
就会接收到这个information
这个字符串这个string里面去了
然后我们再将这个字符串内容
显示在这个label上面
那么这就是一个
在Applet里面
使用Swing组件的简单例子
大家对于这些组件的名字
可能还陌生
对于事件响应的方式
这种监听的方式
可能也还不熟悉呢
没关系
在这一章后面都还会有机会
给大家做详细介绍的
那么我们运行的时候
看到的就是这个样子
一开始就有一个按纽
上面写的Click me
然后底下的这个label
文本区是空白的 什么都没有
那么接下来
如果你点这个Click me的话
就会弹出一个对话框
然后我们可以在这里面
输入文字内容点确定以后
大家看你输入的文字内容
就放在label这去了
如果我们要在Application中
使用Swing
方法也是类似的
一个Application
就是一个本地应用程序
它需要自己有一个主窗口
那我们来看在这个
Application里面
在主方法内方法中
构造了一个JFrame
就是一个主窗口
然后给了一个字符串
那么这个字符串
就会显示在这个
主窗口的标题栏里面
然后同样我们也需要
去取得这个frame里面的
ContentPane
取得一个顶层的内容面板
然后也是要设置它的布局
同样要将这个组件
button和label添加上去
所以我们要构造一个button
构造一个label
然后将它们添加到内容面板上
接下来注册事件监听器的方式
也是一样的
然后接下来设置大小
并且显示这个窗口
最后还要设置一下
默认的关闭窗口的操作
就是退出程序
我们运行的话界面是类似的
只不过这时候是在
Application里面
它是有一个自己的主窗口
也是点击Click me这个按纽
然后就出对话框
输入了字符串以后点确定
这个字符串就显示到
这个label上面了
好 在这一节我们对Swing
有了一个初步的了解
那接下来的内容
我们要逐步深入
更多的来了解swing
-1.0-导学
--1.0-导学
-1.1-Java与面向对象程序设计简介
--第一章 Java语言基础知识--1.1-Java与面向对象程序设计简介
-1.2-基本数据类型与表达式
-第一章 Java语言基础知识--1.2-基本数据类型与表达式
-1.3-数组
--1.3.1-数组
-第一章 Java语言基础知识--1.3-数组
-1.4-算法的流程控制
--第一章 Java语言基础知识--1.4-算法的流程控制
-1.5-第一章小结
-第一章编程练习题
-课件
--外部链接
-Java环境配置、Eclipse使用、Helloworld程序详解
--使用eclipse建立Java项目、编写和运行Java程序
-Java数据类型
--Java整数类型
--Java浮点类型
--数据类型实战
--数据类型转换
--Java强制类型转换精度损失示例与表达式中的数据类型转换
-Java数组
-Java变量
--Java的变量
-命令行参数
--命令行参数的介绍
-2.0-导学
--2.0-导学
-2.1-面向对象方法的特性
--第二章 类与对象--2.1-面向对象方法的特性
-2.2-1-类声明与对象创建
--第二章 类与对象--2.2-1-类声明与对象创建
-2.2-2-数据成员
--第二章 类与对象--2.2-2-数据成员
-2.2-3-方法成员
--第二章 类与对象--2.2-3-方法成员
-2.2-4-包
--2.2-4-包
--第二章 类与对象--2.2-4-包
-2.2-5-类的访问权限控制
--第二章 类与对象--2.2-5-类的访问权限控制
-2.3-1-对象初始化
--第二章 类与对象--2.3-1-对象初始化
-2.3-2-内存回收
--第二章 类与对象--2.3-2-内存回收
-2.4-枚举类
--2.4-枚举类
--第二章 类与对象--2.4-枚举类
-2.5-应用举例
--2.5-应用举例
-2.6-第2章小结
-第二章编程练习题
-课件
--第二章课件
-3.0-导学
--3.0-导学
-3.1.1-3.1.2-类继承的概念和语法
--第三章 类的重用--3.1.1-3.1.2-类继承的概念和语法
-3.1.3-隐藏和覆盖
--第三章 类的重用--3.1.3-隐藏和覆盖
-3.2-Object 类
--第三章 类的重用--3.2-Object 类
-3.3-终结类与终结方法
--第三章 类的重用--3.3-终结类与终结方法
-3.4-抽象类
--3.4-抽象类
--第三章 类的重用--3.4-抽象类
-3.5-泛型
--3.5-泛型
--第三章 类的重用--3.5-泛型
-3.6-类的组合
--3.6-类的组合
-3.7-小结
--3.7-小结
-第三章编程练习题
-课件
--课件
-4.0-导学
--导学
-4.1-接口
--接口
--第四章 接口与多态--4.1-接口
-4.2.1-4.2.2-类型转换
--类型转换
--第四章 接口与多态--4.2.1-4.2.2-类型转换
-4.2.3-方法的查找
--方法的查找
--第四章 接口与多态--4.2.3-方法的查找
-4.3-多态的概念
--多态的概念
--第四章 接口与多态--4.3-多态的概念
-4.4-多态的应用举例
--多态的应用举例
--第四章 接口与多态--4.4-多态的应用举例
-4.5-构造方法与多态性
--构造方法和多态性
--第四章 接口与多态--4.5-构造方法与多态性
-4.6-本章小结
--本章小结
-第四章编程作业
-课件
--课件
-5.0-导学
--5.0-导学
-5.1.1-5.1.2-异常处理的概念
--第五章 输入输出--5.1.1-5.1.2-异常处理的概念
-5.1.3-5.1.5-异常的处理
--第五章 输入输出--5.1.3-5.1.5-异常的处理
-5.2-输入输出流的概念
--输入输出流的概念
--第五章 输入输出--5.2-输入输出流的概念
-5.3.1-写文本文件
--写文本文件
--第五章 输入输出--5.3.1-写文本文件
-5.3.2-读文本文件
--读文本文件
--第五章 输入输出--5.3.2-读文本文件
-5.3.3-写二进制文件
--写二进制文件
--第五章 输入输出--5.3.3-写二进制文件
-5.3.4-读二进制文件
--读二进制文件
-5.3.5-File类
--File类
-5.3.6-处理压缩文件
--处理压缩文件
-5.3.7-对象序列化
--对象序列化
-5.3.8-随机文件读写
--随机文件读写
-5.4-本章小结
--本章小结
-课件
--课件
-6.0-导学
--导学
-6.1-Java集合框架介绍
--第六章 对象群体的组织--6.1-Java集合框架介绍
-6.2-主要接口及常用的实现类
--第六章 对象群体的组织--6.2-主要接口及常用的实现类
-6.3-常用算法
--常用算法
-6.4-数组实用方法
-6.5-基于动态数组的类型(Vector, ArrayList)
--基于动态数组的类型(Vector, ArrayList)
-6.6-遍历Collection
-6.7-Map接口及其实现
-6.8-第6章小结
--第6章小结
-课件
--课件
-7.0-导学
--导学
-7.1-绘图
--绘图
-7.2-Swing基础
--Swing基础
-7.3-Swing的层次
--Swing的层次
-7.4-布局管理
--布局管理
-7.5-内部类
--内部类
-7.6-事件处理的基本概念
-7.7-事件派发机制
--事件派发机制
-7.8-顶层容器
--7.8-顶层容器
-7.9-中间层容器(一)
-7.10-中间层容器(二)
-7.11-原子组件(一)
-7.12-原子组件(二)
-7.13-原子组件(三)
-7.14-其它Swing特性
-7.15-第7章小结
-课件
--课件