




已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章图形用户界面 6 1概述6 2AWT层次结构6 3常用容器的使用6 4布局管理器6 5事件处理机制6 6AWT组件库6 7Swing组件介绍 第6章图形用户界面 6 1概述6 2AWT层次结构6 3常用容器的使用6 4布局管理器6 5事件处理机制6 6AWT组件库6 7Swing组件介绍 第6章图形用户界面设计 6 5AWT事件处理机制6 5 1事件处理方法1 基本概念 1 事件源 Eventsource 图形用户界面上可能发生事件的每个组件称为事件源 例如 按钮 窗口等 2 事件 Events 描述了发生了什么的对象 当用户与GUI组件 事件源 交互时 这些组件就会产生事件 例如 单击按钮等事件 Java中把它们定义为若干个事件类 常用的事件类有ActionEvent WindowEvent MouseEvent KeyEvent等 它们都放在java awt event包中 3 事件对象 是指封装了有关事件的若干信息的事件类的对象 这些信息包括 事件发生的时间 事件类型 事件发生时光标的位置等 4 事件处理器 Eventhandlers 接收事件对象 解释事件对象并处理用户交互的方法 2 AWT事件处理机制JDK1 0的事件模型 层次模型 Frame Button Actionevent 第6章图形用户界面设计6 5事件处理机制 JDK1 1的事件模型 委托模型事件监听器 实现了监听器接口的类 一个监听器对象是一个实现了专门的监听器接口的类的实例 Frame Button 事件监听器 actionPerformed ActionEvente 第6章图形用户界面设计6 5事件处理机制 产生ActionEvent事件 通知 事件源 第6章图形用户界面设计6 5事件处理机制 1 结合例14 6 说明事件处理机制 例14 6 编程处理单击按钮事件 功能 当单击按钮时 在dos窗口中显示一条信息 编写事件监听器 实现单击按钮事件的监听器接口 对应特定事件都在类库中有相应的监听器接口 只要实现了该接口 就是事件监听器 例如 classButtonHandlerimplementsActionListener publicvoidactionPerformed ActionEvente 注册事件监听器 注册监听器可采用事件源的addXXXListener 方法来实现 例如 b addActionListener newButtonHandler 事件源 接口名 监听器对象 第6章图形用户界面设计6 5事件处理机制 事件处理实例 例14 6P226 importjava awt importjava awt event classTestButton publicstaticvoidmain String args Framef newFrame Test Buttonb newButton PressMe b addActionListener newButtonHandler f setLayout newFlowLayout f add b f setSize 200 100 f setVisible true classButtonHandlerimplementsActionListener publicvoidactionPerformed ActionEvente System out println Actionoccured 第6章图形用户界面设计6 5事件处理机制 2 AWT事件处理机制小结 一个事件源 通常是AWT组件 产生一个事件 并把该事件传送到某个监听器对象 listener 监听器对象接收到该事件后处理这个事件 然后返回 如果想要接收并处理XXXEvent事件 必须定义事件监听器类 该类需要实现针对XXXEvent事件的特定接口XXXListener 为了让一个监听器能够接收一个事件 必须给将发生事件的组件注册事件监听器 它是某个事件监听器类的实例 在事件源上通过调用addXXXListener 方法来注册监听器 第6章图形用户界面设计6 5事件处理机制 6 5 2事件类和对应的监听器接口AWT的所有事件类及监听器接口都在java awt event包中定义 每个事件都有对应的监听器接口 1 常用的事件类和AWT监听器接口包括 ActionEventActionListener 激活组件事件 比如 按下一个按钮 选中一个菜单项 在文本框中输入按回车键等 ItemEventItemListener 改变复选框 单选框 列表框 菜单项选中或不选中状态时发生 MouseEventMouseListener MouseMotionListener 鼠标移动 鼠标单击等事件 比如 鼠标被拖动 移动 按下 释放 进入组件 退出组件 单击等事件发生时 WindowEventWindowListener 窗口事件 比如 激活 关闭 失效 恢复 最小化窗口等事件 书中P229 表14 2给出AWT事件及相应的监听器接口 接口中方法的说明 第6章图形用户界面设计6 5事件处理机制 2 监听器接口中定义的方法定义格式 publicvoid方法名 XXXEvente 例如 下例中使用的接口及方法 ActionListener接口中的方法 ActionPerformed ActionEvente MouseMotionListener MouseListener接口中的方法 mouseDragged MouseEvente mouseMoved MouseEvente mousePressed MouseEvente mouseReleased MouseEvente mouseEntered MouseEvente mouseExited MouseEvente mouseClicked MouseEvente WindowListener接口中的方法 windowClosing WindowEvente windowOpened WindowEvente windowIconified WindowEvente windowDeiconified WindowEvente windowClosed WindowEvente windowActivated WindowEvente windowDeactivated WindowEvente 第6章图形用户界面设计6 5事件处理机制 3 常用事件类的常用方法 1 ActionEvent常用方法 ObjectgetSource 返回事件源对象的名称 如按钮btn对象 程序中可以根据事件源判断究竟是哪个按钮被单击了StringgetActionCommand 返回事件源对象的标识 如按钮btn上的文字 OK 2 MouseEvent常用方法 ObjectgetSource intgetButton 返回哪个鼠标按键更改了状态 1 3分别对应左键 滑轮和右键 intgetClickCount 返回与此事件关联的鼠标单击次数intgetX 单击点的X坐标intgetY 单击点的Y坐标 第6章图形用户界面设计6 5事件处理机制 3 ItemEvent常用方法 ObjectgetItem 产生事件的对象名称IntgetStateChange 返回状态更改的类型 已选定或已取消选定 结果为 ItemEvent SELECTED或ItemEvent DESELECTED 第6章图形用户界面设计6 5事件处理机制 4 注册监听器事件源为了能将其上所产生的事件传递给监听器接收并处理 应提供一定的注册和注销监听器的方法 一般格式 publicvoidadd listener 注册监听器 使得该事件源上所发生的事件能被监听器接收并处理publicvoidremove listener 注销监听器 监听器不能监听到事件源上所发生的相应事件例如 组件Button类中提供了方法 voidaddActionListener ActionListenerlistener voidremoveActionListener ActionListenerlistener 第6章图形用户界面设计6 5事件处理机制 例编写处理鼠标事件 窗口事件 并结合该例说明事件处理的方法 书中P231 例14 13 功能 图形界面构成 在框架中 添加标签和文本框两个组件并布局 其中框架为事件源 只对框架本身做监听 事件处理 1 事件 鼠标和窗口事件 2 事件处理方法 当鼠标拖到时 在文本区中给出位置的坐标值 当鼠标进入框架或移开框架 给出提示信息 当按下窗口的关闭按钮时 实现关闭窗口的功能 第6章图形用户界面设计6 5事件处理机制 编程思想 1 界面设计和布局 2 处理两个事件 鼠标事件和窗口事件鼠标事件 MouseEvent接口名 MouseMotionListener MouseListener对应的接口方法 鼠标移动 2个 鼠标 5个窗口事件 WindowEvent接口名 WindowListener对应的接口方法 7个 3 注册监听器 为框架注册监听器 4 定义监听器类 主类又是监听器类 它要实现以上3个监听器接口 注意 在定义监听器类时 应该给出类所实现的接口中所有的事件处理方法的代码 即使不关心某个处理也应该写出空的方法体 第6章图形用户界面设计6 5事件处理机制 程序小结 1 GUI类和监听器类可以是同一个类 2 可以实现多个接口 3 可同时监听多种事件 如Framef 4 可通过监听器对象调用其相关方法 获得处理事件的信息 第6章图形用户界面设计6 5事件处理机制 6 5 3事件适配器由于定义监听器类时都要实现监听器接口 因此也必须实现接口中的所有方法 但这时只需处理有限几个处理时 无关的方法必须有空的实现 为此编程造成不便 为此 Java类库提供了已经实现几种常用的监听器接口的抽象类 它们被称为事件适配器类 1 常用的适配器类包括 FocusAdapter焦点适配器MouseAdapter鼠标适配器MouseMotionAdapter鼠标运动适配器WindowAdapter窗口适配器 第6章图形用户界面设计6 5事件处理机制 2 适配器的使用方法 如果事件监听器不需要继承其它类 可以继承对应的适配器 而不是实现接口 这样 在事件监听器类中只需重写需要处理的方法 例如 为了处理单击鼠标事件 定义一个监听器类MouseClickHandler 直接从MouseAdapter类派生而来 避免了每次重写MouseListener中的所有方法 classMouseClickHandlerextendsMouseAdapter publicvoidmouseEntered MouseEvente publicvoidmouseExited MouseEvente 其余方法可以不用重写 注 和例14 13相比 可以看出适配器类的确带来了方便性 第6章图形用户界面 6 1概述6 2AWT层次结构6 3常用容器的使用6 4布局管理器6 5事件处理机制6 6AWT组件库6 7Swing组件介绍 第6章图形用户界面 6 1概述6 2AWT层次结构6 3常用容器的使用6 4布局管理器6 5事件处理机制6 6AWT组件库6 7Swing组件介绍 第6章图形用户界面设计 6 6AWT组件库6 6 1按钮 Button 构造方法Button Button Stringlabel 常用方法getLabel 返回按钮的标签名setLabel StringLabel 为指定的按钮设置标签名常见事件处理处理按钮被按下事件时 应处理ActionEvent事件处理鼠标事件时 应处理MouseEvent事件 处理获得焦点事件时 应处理FocusEvent事件 第6章图形用户界面设计6 6AWT组件库 6 6 2复选框 Checkbox 构造方法Checkbox 创建一个不带标签的复选框 默认状态为 关 Checkbox Strings 创建一个带有标签的复选框 默认状态为 关 Checkbox Strings CheckboxGroupgroup booleanstate 例如 Checkboxcb1 newCheckbox one null true Checkboxcb2 newCheckbox two Checkboxcb3 newCheckbox three 完整的例子在example文件夹中名为MyCheckbox java 常用方法StringgetLabel 获取复选框的标签voidsetLabel 设置复选框的标签booleangetState 获取复选框的选中与否的状态voidsetState 设置复选框的选中与否状态常见事件处理当复选框状态发生变化时 应处理ItemEvent事件 第6章图形用户界面设计6 6AWT组件库 6 6 3复选框组 CheckboxGroup 和单选框单选框在Java语言中就是成组的复选框 组由CheckboxGroup类的对象指定 再将复选框加入到复选框组中 构造方法CheckboxGroup 例如 创建复选框组 CheckboxGroupcbg newCheckboxGroup Checkboxone newCheckbox one cbg true Checkboxtwo newCheckbox two cbg false Checkboxthree newCheckbox three cbg false 完整的例子在example文件夹中名为MyCheckboxGroup java 第6章图形用户界面设计6 6AWT组件库 6 6 4下拉列表框 Choice 构造方法Choice 常用方法add 列表项目 添加列表项目getItemCount 获取列表项目个数getSelectedIndex 获取被选中项目的编号getItem index 获取第index个项目的文字内容select pos 选中第pos项目remove pos 删除第pos项remove 文字 删除内容为 文字 的项目removeAll 清空全部列表内容例如 Choicecolors newChoice colors add Green colors add Red colors add Blue 完整的例子在example文件夹中名为MyChoice java 第6章图形用户界面设计6 6AWT组件库 6 6 7画布 Canvas 画布是一种可以在上面画各种图形 图像和字符串的矩形框组成的组件 它可以引发键盘事件和鼠标事件 如下例 importjava awt importjava awt event classCanvasTestimplementsMouseMotionListener staticCanvascv publicstaticvoidmain String args Framef newFrame cv newCanvas cv setBackground Color blue cv addMouseMotionListener newCanvasTest f add cv f setSize 400 300 f setVisible true 第6章图形用户界面设计6 6AWT组件库 cv调用getGraphics 获取Graphics对象 再进行画图操作 publicvoidmouseMoved MouseEvente intx e getX inty e getY cv setForeground Color black cv getGraphics drawLine x y x y publicvoidmouseDragged MouseEvente intx e getX y e getY cv setForeground Color yellow cv getGraphics drawLine x y x y 第6章图形用户界面设计6 6AWT组件库 6 6 8标签 Label 标签的作用是用来进行信息说明 它是一个文本显示框 只用来显示文本 不能编辑 由于不能编辑 所以不会产生事件 即不能作为事件源 常用方法 setText String 设置标签名字getText 获取标签名字setBackground Colorc 设置背景色setForeground Colorc 设置字的颜色 默认为黑色 第6章图形用户界面设计6 6AWT组件库 6 6 9文本框 TextField 构造方法TextField TextField 长度 TextField 内容 TextField 内容 长度 常用方法setText Strings 设置文本框内容getText 获取文本框内容setEchoChar Strings 设置响应字符事件响应 当用户在文本区按回车键 引发动作事件 例如 TextFieldtf newTextField 输入字符串 tf addActionLisener this 可以在ActionEvent事件监听器中的actionPerformed 方法中完成事件处理 第6章图形用户界面设计6 6AWT组件库 6 6 10文本区 TextArea 构造方法TextArea TextArea 内容 TextArea 行数 列数 TextArea 内容 行数 列数 常用方法setBackground Colorc 设置背景颜色getText 获取内容setText 设置内容append Strings 添加内容 换行需要用 n 字符selectAll 全部选中 第6章图形用户界面设计6 6AWT组件库 6 6 6列表框 List 构造方法List 使用默认的可见行List intn 创建具有n行的列表框List intn booleanb b设置是否可以多项选择常用方法add 列表项目 添加列表项目getItemCount 获取列表项目个数getSelectIndex 获取被选中项目的编号getItem index 获取第index个项目的文字内容String getSelectedItem 获取被选中的多个项目的文字内容select 文字 选中内容为 文字 的项目remove 文字 删除内容为 文字 的项目removeAll 清空全部列表的内容 第6章图形用户界面设计 编程实例例 将实验2改造成GUI版的猜数游戏游戏界面编程实现 当在文本框中输入一个数时 单击 确定 按钮 给出一个提示信息 猜数的结果 第6章图形用户界面设计编程实例 importjava awt importjava awt event importjavax swing JOptionPane classGuess 1implementsActionListener Framefr TextFieldt Buttonb1 b2 intiNum publicstaticvoidmain String args Guess 1g newGuess 1 g go 第6章图形用户界面设计编程实例 voidgo doubledNum Math random iNum int dNum 10 fr newFrame GuessNumber fr setLayout newFlowLayout Labell newLabel 请输入数据1 1000 t newTextField 20 b1 newButton 确定 b2 newButton 取消 fr add l fr add t fr add b1 b1 addActionListener this fr add b2 b2 addActionListener this fr setSize 200 200 fr setVisible true 第6章图形用户界面设计编程实例 publicvoidactionPerformed ActionEvente if e getSource b1 try inti Integer parseInt t getText if iiNum JOptionPane showMessageDialog fr 猜大了 elseJOptionPane showMessageDialog fr 猜对了 catch Exceptione1 JOptionPane showMessageDialog fr 输入错误 请重新输入 t setText elseSystem exit 1 第6章图形用户界面设计6 6AWT组件库 6 6 6菜单 Menu 菜单是一种特殊的组件 它只能被添加到菜单条 普通菜单 或被添加到任一组件上 弹出菜单 普通菜单由菜单条 MenuBar 菜单 Menu 和菜单项 MenuItem 三部分组成 菜单条 MenuBar 是一种水平菜单 它只能添加到Frame对象中 作为整个菜单树的根基 菜单 Menu 可以被添加到菜单条中 同时它还可以包含若干菜单项或子菜单 菜单项 MenuItem 可以被添加到一个菜单中 形成标准的下拉式菜单 菜单项被单击后会引发一个动作命令 菜单项也可以是复选框菜单 CheckboxMenuItem 第6章图形用户界面设计6 6AWT组件库 菜单类之间的继承关系 它们都在java awt包中 MenuComponent MenuBar 菜单条 MenuItem 菜单项 CheckboxMenuItem 带复选框的菜单项 Menu 菜单 MenuComponent 弹出菜单 第6章图形用户界面设计6 6AWT组件库 各种菜单类的部分常用方法 1 MenuBar类构造方法MenuBar 其它方法add Menum 将指定的菜单添加到菜单条中 2 Menu类构造方法Menu Stringstr 其它方法add MenuItemitem 向菜单中增加菜单项 3 MenuItem类构造方法MenuItem Stringstr 第6章图形用户界面设计6 6AWT组件库 1 菜单设计步骤 1 创建菜单条 创建的菜单条并加入到某容器中 例如 创建一个空菜单条如下 创建一个容器frMenuBarmb newMenuBar fr setMenuBar mb 2 创建菜单Menu加入到菜单条中 例如 创建一个标题为 File 的菜单加入到菜单条mb中 使用如下命令 Menum newMenu File mb add m 3 创建菜单项 并加入菜单中 例如 在创建一个标题为 Open 的菜单项 加入到菜单m中 命令如下 MenuItemmi newMenuItem Open m add mi 第6章图形用户界面设计6 6AWT组件库 例 下面是建立普通菜单的例子 importjava awt classMenuTest publicstaticvoidmain String args Framefr newFrame MenuTest MenuBarmb newMenuBar fr setMenuBar mb Menum newMenu File mb add m MenuItemmi newMenuItem Open m add mi fr setSize 300 200 fr setVisible true 修改代码后的结果 运行结果 第6章图形用户界面设计6 6AWT组件库 2 复选框菜单项 CheckboxMenuItem类 表示该菜单项带一个复选框 例 修改上例的代码 importjava awt classMenuTest publicstaticvoidmain String args Framefr newFrame MenuTest MenuBarmb newMenuBar fr setMenuBar mb Menum newMenu File mb add m MenuItemmi newMenuItem Open CheckboxMenuItemmi newCheckboxMenuItem Open m add mi fr setSize 300 200 fr setVisible true 当复选框状态发生变化时 复选框菜单项可以产生ItemEvent事件 第6章图形用户界面设计6 6AWT组件库 3 弹出式菜单 PopupMenu 可以在任一组件上弹出 同时可以在弹出式菜单中添加菜单和菜单项 参看书P244 或参看example文件夹中的名为PopupTest java的源文件 第6章图形用户界面设计6 6AWT组件库 6 6 13对话框 Dialog Dialog是一种容器 其缺省布局管理器为BorderLayout 对话框分为有模式和无模式两种 有模式对话框只让程序响应对话框内部事件 而无模式对话框可让程序响应对话框内部和外部的事件 对话框和Frame一样 也需要setVisible true 使其可见 要关闭对话框 也用 对话框对象 null 语句 对话框与Frame不同的是 它不能作为程序的最外层容器 也不能包含菜单条 它必须属于某个Frame 并由该Frame弹出 第6章图形用户界面设计6 6AWT组件库 1 Dialog 对话框 类的常用方法 构造方法Dialog Framefr 在parent基础上打开对话框Dialog Framefr booleanboo 参数boo用来设置对话框的模式Dialog Framefr Stringtitle booleanboo 其他方法setTitle getTitle setModal booleanb setSize setVisible booleanb 第6章图形用户界面设计6 6AWT组件库 2 创建对话框的操作步骤 1 创建一个窗口类 因为对话框必须依赖于一个窗口 3 创建对话框对象 它必须是Dialog类或其子类对象 并设置对话框的大小 3 创建主类 启动和初始化窗口类和对话框 例 当点击窗口中的 打开对话框 按钮时 弹出一个对话框 当点击窗口中的 关闭对话框 按钮时 关闭对话框 参看书中P240 或example文件夹中的名为DialogTest java的源文件 另外 example文件夹中的名为DialogTest 2 java的源文件 实现一定功能的对话框 即当在一个文本框中输入英文字符串并回车 在另一个文本框中显示翻译结果 第6章图形用户界面 6 1概述6 2AWT层次结构6 3常用容器的使用6 4布局管理器6 5事件处理机制6 6AWT组件库6 7Swing组件介绍 第6章图形用户界面 6 1概述6 2AWT层次结构6 3常用容器的使用6 4布局管理器6 5事件处理机制6 6AWT组件库6 7Swing组件介绍 6 7 1关于JFC JFC JavaFoundationClasses Java基础类 是关于GUI组件和服务的完整集合 主要包含5个API AWT Java2D Accessibility Drag Drop Swing JFC提供了帮助开发人员设计复杂应用程序的一整套应用程序开发包 Java2D是一套图形API 它为Java应用程序提供了一套高级的有关二维 2D 图形图像处理的类 Java2DAPI扩展了java awt和java awt image类 并提供了丰富的绘图风格 定义了复杂图形的机制和精心调节绘制过程的方法和类 这些API使得独立于平台的图形应
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【教案版】小学五班级上册 小足球2
- 2025年物联网技术中级工程师岗位知识模拟题集萃
- 电力器具基础知识培训总结
- 2025年建筑设计师招聘考试试题及标准答案指南
- 2025年初级软件架构师认证模拟试题及答案解析
- 2025年山东省威海市荣成市中考化学模拟试卷(二)
- 2025年特岗教师招聘考试初中数学知识点回顾与面试预测题
- 2025年中级火电运行值班员考试复习策略与技巧
- 电信基础业务知识培训课件
- 2025年互联网产品经理面试题详解与解析思路
- GB/T 13762-2009土工合成材料土工布及土工布有关产品单位面积质量的测定方法
- 药品出、入库验收制度
- 个人房地产抵押合同书
- 车间员工技能管理办法
- 医院零星维修管理制度及零星维修审批单
- DB11T 1581-2018 生产经营单位应急能力评估规范
- 青年教师成长之路
- 汶川地震波时程记录(卧龙3向)
- 吴迪完胜股市学习笔记
- HB 4-1-2020 扩口管路连接件通用规范
- 霸王集团盘中盘路演模式课件
评论
0/150
提交评论