当前课程知识点:Java程序设计 > 第七章 图形用户界面 > 7.12-原子组件(二) > 7.12-原子组件(二)
大家好 欢迎回来继续学习
Java语言程序设计
接下来我们
就来学习第二类原子组件
就是具有控制功能
可以用来输入信息的原子组件
首先我们来看按钮类
Abstract按钮是众多按钮类的超类
它是一个抽象类
从这张图上我们可以看到
继承AbstractButton
这个抽象类的有哪些
有JButton是普通的按钮
还有JToggleButton是
具有选择状态的按钮
包括多选按钮单选按钮
还有JMenuItem菜单项
菜单项里面又包括JCheckBoxMenuItem
和JRadioButtonMenuItem
还有一般的菜单项
这里给出了几种
常见的按钮的示意图
还有一种常见的组件就是列表JList
JList里面的表项一般是
允许可以选择一项或者是多项的
列表框JList它有几种
各有特色的构造方法
它的选项包括是否
可以添加删除等等
也提供了很多API可以用来
设置各选项的显示方式
选择模式等等
因为JList通常还有很多选项
所以经常会把它放在一个
带滚动条的JScrollPane里面
那么JList事件处理
一般可以分成两类
一类是取得用户选取的项目
那么它的事件监听器
是ListSelectionListener
还有就是对鼠标事件做出响应
它的事件监听器就是MouseListener
组合框也是非常常用的一种组件
JComboBox它有两种不同的形式
如果你地方够大
可以用下拉列表的方式
如果地方比较紧张
可以就用另一种更紧凑的方式
用下拉列表的这种模式
应该说它默认状态是不可编辑的
用户只能在下拉的列表
提供的内容中选择一个
那另一种是可编辑的模式
它的特点是多了一个文本区域
用户可以在这个文本区域里面
填入列表中不包括的内容
用组合框只需要很少的屏幕区域
那相对来说如果
你用一组RadioBox或是CheckBox
或者JList那占的空间就比较大了
当我们需要选择
连续的数值的时候
我们可以选择这种滑块的组件
或者我们可以用箭头上下
增加减少数值的这样的组件
这个Slider和Spinner
JSlider它在窗口中
占的地方就比较大
我们可以为它设置
它的最小值最大值初始的刻度
还可以设置它的方向
还可以在上面
标上刻度或者是文本
在JSlider上面移动滑竿的时候
就会触发Changed Event事件
JSpinner相对来说
它占的地方就比较小
其实它很类似于可编辑的
就是JComboBox
是一种复合组件
它有三个部分组成
有向上按钮向下按钮
和一个文本编辑区
我们可以通过按钮来选择待选项
也可以直接
在文本编辑区里面输入
这个和JComboBox不同的是
它的待选项是不会显示出来的
还有一类组件它是文本组件
文本组件就允许用户
在里面输入文本
那么有的组件是允许用户
简单的输入单行文本的
或者多行无格式的文本
或者多行文本
还可以有格式信息的
那么这些它都是
属于文本类的组件
我们从这个图上可以看出来
文本组件都从这个
JTextComponent继承而来
JTextComponent是一个抽象类
那么它的子类
可以分成三种类型
一个是JTextField
JPasswordField JFormedTextField
这些都是只能显示
和编辑一行文本的就像按钮一样
它们可以产生ActionEvent事件
那通常就是用户
需要输入少量的文本信息的时候
就可以用这个
JTextArea是一个
可以输入文本的区域
于是就可以在里面
输入和编辑多行文本
但是这些文本只能是单一风格的
不能对它进行不同的格式设置
通常就是用来输入长度比较大的
或者任意长度的无格式文本
或者用于显示无格式的帮助信息
那么如果是希望
显示和编辑多行文本
又可以设置它的样式的话
那就要用JEditorPane和JTextPane
接下来我们就通过一个例子
来体会一下这些
原子组件它们合在一起
共同作用的情况
这是一个简单的计算器的例子
非常简单只能做加减乘除运算
首先还要让你输入密码
输入密码正确以后
那就可以开始选择
进行加减乘除运算
接下来我们就来看一下
这个例题的源代码
好 现在我们就来看一下
这个简单计算器的例子
这个代码有点长
我们来看它的主要部分
我们从这个主方法这儿开始
我们看到主方法
先构造一个计算器对象Calulator
然后又构造一个Password对象
那么这个Password对象
是传给它的一个这个f
f是我们看到是
应该是这个我们构造的
一个JFrame对象JFrame对象
是应该在当前类的
构造方法中构造的
在Calulator这构造方法中
构造了一个主窗口
好 有了主窗口以后
我们去出一个密码对话框
密码填对了以后
就开始执行这个计算器的计算功能
你可以选加减乘除
输入数字就能计算了
大概是这样的过程
好 那现在看先构造由Calculator对象
我们来看Calculator的构造方法
在这儿构造了一个JFrame的
一个主窗口以后
要去取得它的内容面板
然后要在上面
去构造一个新建一个Panel
布局边框这个我们先不管它了
接下来我们要准备好
这个加减乘除的按钮
加减乘除都是
用单选按钮来表示的
我们构造了四个按钮
然后将这四个按钮加在哪儿去
加在我们刚才新建的
这个Panel上面P1
也就是P1这个Panel
是放加减乘除按钮的
我们来看一下前面给演示的这个图
也就是这个加减乘除按钮
是放在一个Panel上面的
好 接下来我们再来看
要把这四个按钮
把它放到一个组里面
因为这个单选按钮
你要把它放在一个组里面
放在一个ButtonGroup里面的话
就能够保证这四个按钮
只能四选一单选
所以我们要构造一个单选ButtonGroup
把它放在一个组里面
接下来就要为单选按钮
添加ItemListener事件监听器了
所以这个事件监听器
都是当前对象自己
所以把当前对象自己
这个对象添加到四个按钮上面去
就点了按钮以后要触发事件
好 接下来我们再来
看创建第二个Panel
第二个Panel上面要放操作数
要放操作数
所以我们先给出提示来
一个JLabel第一个操作数
一个JLabel是第二个操作数
然后接下来我们
要做一个下拉列表框
可选的数据列在这儿了
然后用这样一个字符串数组
作为选择的内容
去构造一个JComboBox
也就是说你可以一下拉列表
就选择参与操作 操作数
也可以自己来填写
所以setEditable
就说可编辑的设成数
接下来我们调用这个ComboBox
它的getEditor方法
去返回一个ComboBoxEditor
然后你就可以直接输入数字了
这就是即可以拉下来选
你可以直接输入
那么另一个操作数
是用这个Spinner来选择的
Spinner创建一个
有序变化的选择框
你上箭头下箭头就可以选个数
来参加运算 好
那接下来我们要
把这个操作数的组件
和这个Label我们都要
添加到这个操作数的Panel上面去
然后我们看添加的
L1和L2是刚才这个提示
第一个操作数第二个操作数
然后添加的这个Combo
和这个S1就是
这个下拉列表框和这个Spinner
用来选择两个操作数的
下面再创建第三个Panel
在一个新的Panel
这个上面要放什么
要放这个计算按钮
我们构造一个Button
上面写的计算
然后这个Label大家看创建的时候
它是一个空的
一个空的没有用的时候
接下来我们把这个计算按钮
和这空的用于显示文字内容的
这个Label都添加到
第三个Panel上面去
然后这个计算按钮
要添加事件监听器
也是当前对象自己
要添加事件监听器
好 那这三个Panel都准备好了以后
将它们都添加到内容面板上来
还要设置一个什么
设置一个DefaultButton
就是缺省的Button
也就是说我们在用
很多软件时候看到你一打开的时候
它的Button就有一个是已经选中的了
如果你可以打回车
就相当于按上这个Button
所以我们要设置一下
这个缺省的Button
就让它去计算这个Button1
然后这整个窗口的关闭按钮
设置一下它的效果是退出
好 这个我们看到
这就是这个calculate
它的构造方法
calculate的构造方法
好 接下来我们就来看事件响应代码
第一个我们来看ItemStateChanged
就是单选按钮被点的时候触发
那么就要看它这个事件源
getSource到底是哪个按钮被点了
然后它的操作符到底是
第一个第二个第三个第四个
就加减乘除它的运算符就确定了
再看点击计算按钮的时候
触发什么
触发ActionPerformed
那么这时候就要
把你填的操作数取出来了
要把这个ComboBox里面
选的那个操作数
或者填的那个操作数取出来
要把这个Spinner里面
那个操作数取出来
都作为String取出来
然后再用这个Double类的
parseDouble方法
把它转成Double型的数据
然后接下来就开始计算
给你的操作符是加减乘除是几
比如说第一个操作符按钮
那你就加法
第二个就是减法等等
就是用于取出来数做计算
如果说运算符没有选择
就点计算了
那么就显示一个文字
请选择运算符
如果说运算符选择对了计算
大家看刚才那个L3
那个空的Label是干嘛的
用来放计算结果的
我们就把计算结果放到上面去
好 接下来我们就来看
这个输入密码的对话框的这个
输入密码以后的
这个ActionListener它的响应
我们在主方法中构造好了
这个计算器以后
那接下来马上就弹出一个对话框
让你输入密码
那么我们来看这个Password
它的构造方法里面
首先就新建一个对话框
请输入密码
就设这个标题请输入密码
然后在这个对话框里面
也是要有它的顶层的ContentPane
也是要有布局等等这些
关键是里面要有一个JTextField
然后要把它添加到
这个dialogPane里面去
然后在这个dialogPane里面
还要添加一个Label这是个密码
接下来要构造一个JPasswordField
也把它添到了dialogPane里面去
然后要有按钮确定退出
那么也要设定回车
对应的缺省的按钮这些
那么它的注册监听器
就是这个对密码类
它自己当前的对象自己
那我们来看在它的
actionPerformed那里面
如果你选的是确定
那么接下来就是比较密码了
比较密码正确就关闭对话框
显示主窗口
那这时候你就可以去做计算了
如果密码错误的话
那么就显示请重新输入
如果选择退出
那么就整个程序就退出了
那么这个例题里面
可以说综合运用了
我们比较常用的一些组件
仔细的每一行的代码
没有时间一行行去讲
那么大家课下可以去慢慢
读一下这个代码
程序会挂到网上去的
好 这一节我们学习了具有控制功能
能够让用户来输入信息的
这一类原子组件
好 这一节内容就是这些
-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章小结
-课件
--课件