当前课程知识点:Java程序设计 > 第七章 图形用户界面 > 7.14-其它Swing特性 > 7.14-其它Swing特性
大家好 欢迎回来继续学习
Java语言程序设计
我们前面学习了Swing的
容器的层次和组件
接下来我们来再学习
一些Swing的其他的特性
那这一节我们要
来了解一下Action对象
还有组件的边框
还有怎么设置这个组件的观感
我相信大家用到很多软件的时候
都会见到有的功能
既在菜单项中体现出来
也出现在工具条上
也就是说工具条上的某个按钮
可能跟某个菜单里面的菜单项
它的功能是一样的
你选菜单项或者
点工具栏上的按钮
都可以达到同样的效果
那么我们写程序的时候
怎么实现这一点呢
我们想象一下那是不是就是得
向菜单项要注册监听器
向这个工具栏上的按钮
也得注册监听器
这些监听器它们
得完成同样的事件响应功能
那么这样一一去注册监听器
是不是就挺麻烦的呢
有没有更好的办法呢
Action对象就是干这个用的
我们可以用Action对象
来封装对不同的组件
比如菜单项和按钮
它们的同样的响应功能
把这样的响应功能封装在里面
还可以封装一些
其他的有关的属性的设置
封装成Action对象以后
我们可以把Action对象添加到
需要这种响应的各个地方
包括菜单项工具条
上面的按钮等等
Action接口是
对ActionListener接口的
一个有用的扩展
我们看这里给出了它的继承关系
它就扩展了ActionListener接口的
在既有菜单又有工具栏的
这样的应用程序中
我们就可以通过Action对象
来封装事件响应代码
和相关的设置
并且将这个Action对象
添加到不同的事件源去
这样不同的事件源
就可以得到同样的响应
我们还可以通过它
对不同组件的显示文字
图标快捷键提示文字
是否可用等等这些属性
进行统一的设置
那么怎么创建Action对象呢
当然我们要创建的肯定
是一个实现了Action接口的
非抽象类的对象
那AbstractAction类
是实现了Action接口的一个抽象类
为什么它是抽象类
因为它就唯独
没有实现ActionPerformed的方法
除了ActionPerformed方法
以外的其他方法
在AbstractAction类中都实现了
而且它还提供了一些
获取和设置Action域属性的方法
那我们要创建Action对象
就首先需要创建一个
继承或者扩展抽象类
AbstractAction类的子类
然后再实例化这个子类
这个时候在子类中
我们要定义ActionPerformed的方法
还可以设置需要的一些属性值
创建了Action对象以后
接下来我们就可以在程序中
使用Action对象了
我们可以通过GUI组件的
在Action方法将Action
对象关联到组件
每个具有ActionListener方法的组件
也都有setAction方法
实际上Action它就是一个事件监听器
那如果说你需要向某个组件上
或者叫某个事件源上
添加多个事件监听器的话
那还是应该使用ActionListener方法
因为一个机外组件
虽然它可以多次调用setAction方法
但是你调用第二次setAction
那么组件和前一个Action对象
之间的关联就会被删除了
也就是说如果你注册
多个Action对象的话
那只有最后一个Action对象
关联上了其他的都被删除了
所以如果需要注册多个监听器
还是只能使用ActionListener
那我们通过setAction方法
把Action对象关联到
某个GUI组件以后会有什么效果呢
效果就是这个组件的属性
会被设置为符合
这个Action对象的属性
也就是在Action对象里面
我们可以统一规定
它所关联的组件的属性
还有这个Action对象
会被注册为这个组件的
一个事件监听器对象
如果我们改变了Action对象
的属性或者方法
那么和它关联的
组件的属性和方法也会自动变更
以符合这个改变了的Action对象
Swing组件的另一个
有用的共同特性就是边框
每一个继承自JComponent的组件
它都可以去设置边框
使用组件的setBorder方法
就可以为组件添加边框
这个时候需要提供
一个Border类的对象作为参数
那么我们可以用BorderFactory类
提供的很多静态方法
来产生常用的Border对象
那么如果这些常用的Border对象
你认为不能够满足
一些程序的特殊要求的话
也可以直接使用
这个Border包里面的API
来自定义自己的特色的边框
这个表给出了有关边框常用API
包括BorderFactory类
里边的静态方法
它们返回的都是Border对象
还有Swing组件
用来设置边框的这个API
另一个Swing中有用的特性
就是我们可以给组件来设置观感
观感什么就是LookAndFeel
我们可以使用UIManager类
所提供的setLookAndFeel静态方法
来设置组件的观感
设置好观感以后再让它变成可见
Java为我们提供了跨平台的观感
那么我们可以利用
UIManager类提供的
getCrossPlatformLookAndFeelClassName
这个静态方法获得类名
程序所属系统的观感我们也可以取得
那这可以也是利用
UIManager类提供的方法
这是getSystemLookAndFeel
这个方法就可以获得
目前的操作系统平台
它的LookAndFeel类名
我们不仅可以设置组件的观感
还可以设置顶层容器的观感
顶层容器JFrame和JDialog
都是重量级的组件
所以它是依赖于操作系统的
当使用操作系统不同的时候
所显示的顶层容器
它的观感就是外观
和感觉就会是不同的
那针对这两个顶层容器
有一个静态的方法
专门为它设置观感这个就是
setDefaultLookAndFeeldecorated
如果它的参数是true
那就会选用默认的观感
也就是外观和感觉
如果参数是false
那就会选用操作平台的观感
这里给出了几个
比较常用的观感的例子
从Java6开始提供了一种
叫做桌面API的
这样一个应用程序接口
是用来干什么的呢
比如说我们程序中
如果需要使用本地的
某些应用程序
来处理相关的文件
比如用某个应用程序
来打开某个特定类型的文件
那这个时候我们这个桌面API
就可以来调用本地的应用程序
具体来讲桌面API允许Java应用程序
完成这样三件事情
一是可以用主机平台上
默认的浏览器去打开一个UIL
这是由DeskTop的browse
方法来完成的
还有可以启用主机平台上
默认的邮件客户端
对于特定的文件还可以启用
主机平台上与之
相关联的应用程序
对文件进行打开编辑
打印这些操作
这一节我们了解了Swing组件
和它容器的一些
共同的有用的特性
包括Action对象边框观感
还有桌面API
好 这一节内容就是这些
-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章小结
-课件
--课件