




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机科学与技术学院网络工程教研室 Java图形编程(3) 一、复习 二、知识点讲解: 1)Java的事件处理机制 2)JOptionPane类的用法 三、例题讲解 四、小结和作业 计算机科学与技术学院网络工程教研室 一、复习 1. java.awt包常用的三种布局编辑类 u每个布局编辑类对应一种布局策略,分别是 FlowLayout:流式布局管理器 BorderLayout:边界布局管理器 GridLayout:网格布局管理器 2. 常用的控件组件 标签JLabel 按钮JButton 单行文本框JTextField 多行文本区JTextArea 计算机科学与技术学院网络工程教研室 3)Java的事件处理机制 1.委托事件模型 Java采用委托事件模型来进行事件处理,不同的事件由不 同的监听者处理。 u事件源:产生事件的组件。 鼠标,文本框,按钮,选择项目,菜单项目等产生各种操 作的对象。 u事件:即其所产生的动作状态。 用户执行的动作:单击鼠标,按按钮,选择项目,单击菜 单条,在文本框中按下回车键等。 一、复习 计算机科学与技术学院网络工程教研室 1.委托事件模型 事件源 注册:btn.addActionListener(监听者对象); ActionEvent事件 事件监听器(监听者) 实现接口:public void actionPerformed(ActionEvent e) 注册 触发事件 调用并传递参数 3)Java的事件处理机制 一、复习 计算机科学与技术学院网络工程教研室 2.actionPerformed()方法的执行流程 1.当事件源上发生监听者可以处理的事 件时,如鼠标单击JButton按钮或者在 JTextField中敲回车键。 2. 事件源JButton把这个事件(ActionEvent e)作为实际参 数传递给事件监听器(类GuessNumber)中负责处理这类 事件的方法(actionPerformed(ActionEvent e) 3. 一旦有参数传递到actionPerformed方法中,这个方法就 被系统自动调用执行,事件就按照程序代码中定义的流程 得到了处理。 3)Java的事件处理机制 一、复习 计算机科学与技术学院网络工程教研室 u 知识点之四:事件监听器的三种形式 1)主类自身是事件监听器 2)定义一个内部类作为事件监听器 3)定义一个匿名内部类作为事件监听器 二、知识点讲解 计算机科学与技术学院网络工程教研室 u 知识点之四:主类自身是事件监听器 二、知识点讲解 public class GuessNumber extends JFrame implements ActionListener JButton okBtn;/确定按钮 public void init() okBtn=new JButton(“确定“);/定义JFrame中包含的组件 okBtn.addActionListener(this);/注册动作事件 public void eventHandle() /触发动作事件时的处理过程 public void actionPerformed(ActionEvent e) if(e.getSource()=okBtn) eventHandle(); 计算机科学与技术学院网络工程教研室 u 知识点之四:定义一个内部类作为事件监听器 二、知识点讲解 在GuessNumber1类中定义一个内部类ActionEventHandler( 自定义的类名) 该内部类继承了动作事件监听器接口ActionListener 该类中实现接口ActionListener的方法actionPerformed() public class GuessNumber1 extends JFrame GuessNumber1() class ActionEventHandler implements ActionListener /内部类 public void actionPerformed(ActionEvent e) if(e.getSource()=okBtn) eventHandle(); /该类的其他代码 计算机科学与技术学院网络工程教研室 u 知识点之四:定义一个内部类作为事件监听器 二、知识点讲解 public class GuessNumber1 extends JFrame GuessNumber1() okBtn.addActionListener(new ActionEventHandler(); numJtf.addActionListener(new ActionEventHandler(); class ActionEventHandler implements ActionListener public void actionPerformed(ActionEvent e) /监听者是一个内部类ActionEventHandler public void eventHandle()/触发动作事件时的处理过程 计算机科学与技术学院网络工程教研室 u 知识点之四:定义匿名内部类作为事件监听器 二、知识点讲解 public class GuessNumber3 extends JFrame public void GuessNumber3() okBtn.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) if (e.getSource() = okBtn) eventHandle(); else if (e.getSource() = numJtf) eventHandle(); );/ 使用匿名内部内注册动作事件 计算机科学与技术学院网络工程教研室 4. AWTEvent类体系结构 ContainerEven t EventObject AWTEvent ActionEventTextEven t AdjustmentEvent ComponentEven t ItemtEvent WindowEven t FocusEven t InputEventPaintEvent MouseEventKeyEvent u 知识点之四:事件处理机制 二、知识点讲解 ActionEventTextEven t ItemtEvent FocusEven t MouseEventKeyEvent WindowEven t 计算机科学与技术学院网络工程教研室 5.AWTEvent需要注意的问题 ujava.awt.event包中定义了11个监听者接口,每个接口内 部包含了若干处理相关事件的抽象方法。 uMouseEvent类有两个监听者接口与之相对应 MouseListener接口 具体事件包括:MOUSE_CLICKED,MOUSE_ENTERED, MOUSE_EXITED,MOUSE_PRESSED,MOUSE_RELEASED MouseMotionListener接口 具体事件包括:MOUSE_DRAGGED,MOUSE_MOVED u 知识点之四:事件处理机制 二、知识点讲解 计算机科学与技术学院网络工程教研室 5. AWTEvent需要注意的问题 u一个事件类可能对应多个事件。 如KeyEvent类对应三个具体事件 KEY-PRESSED(键按下) KEY-RELEASED(键松开) KEY-TYPED(击键) u 知识点之四:事件处理机制 二、知识点讲解 计算机科学与技术学院网络工程教研室 6.事件监听器编程总结 实现事件监听器接口有三种途径: GuessNumber类自身是一个事件监听器 设计一个内部类作为一个事件监听器 匿名内部类实现事件监听器 很多教材和参考书中建议为事件处理设计一个专门的内部类 ,而不要将一个已经存在的类转换为监听器。 二、知识点讲解 u 知识点之四:事件处理机制 计算机科学与技术学院网络工程教研室 u知识点之五:JOptionPane类的用法 创建简单对话框,这个对话框将位于parent组件的中央,如 果parent为null,对话框将显示在屏幕的中央。 Java中创建简单对话框不用JDialog类,而用类 JOptionPane的静态方法即可。 需要提供对话框需要的参数。 简单对话框有4种,方法名的形式都是showXXXDialog。 消息框showMessageDialog的用法: JOptionPane.showMessageDialog(所属Frame,消息本身, 对话框标题,图形标志常量) 如GuessNumber.java中的eventHandle()方法: 二、知识点讲解 计算机科学与技术学院网络工程教研室 public void eventHandle() try userInt=Integer.parseInt(numJtf.getText().trim(); catch(NumberFormatException ex) JOptionPane.showMessageDialog(this,“请将您 猜得的整数输入到文本框中!“); numJtf.setText(“); numJtf.requestFocus(); 二、知识点讲解 u知识点之五:JOptionPane类的用法 计算机科学与技术学院网络工程教研室 p问题 JOptionPane.showMessageDialog(null,“请将您猜得的整数输 入到文本框中!“); JOptionPane.showMessageDialog(this,“请将您猜得的整数输 入到文本框中!“); 上面两条语句的执行结果有什么区别? 二、知识点讲解 u知识点之五:JOptionPane类的用法 计算机科学与技术学院网络工程教研室 4)JFrame组件之JCheckBox u复选框JCheckBox JCheckBox cb1=new JCheckBox(“Check Box 1“); JCheckBox cb2=new JCheckBox(“Check Box 2“); JCheckBox cb3=new JCheckBox(“Check Box 3“); 每个复选框有两种状态:选中状态和未选中状态。 u常用方法 1)getState():返回用户在复选框所做的选择,如果复选框 被选中,该方法返回值为true;如果复选框未被选中,该方 法返回值为false。 2)setState():设置复选框。bold.setState(true); 设置bold为 选中状态。 二、知识点讲解 计算机科学与技术学院网络工程教研室 知识点之六:JFrame组件之JCheckBox u例题-CheckBoxes.java 读程序,回答问题: 程序的运行界面是什么样子的? JCheckBox组件可以触发什么事件?组件向相应的事件监听器进行注 册的时候采用的是三种途径中的哪种方法? 类中定义了一个JTextArea组件t,JTextArea t=new JTextArea(6,15); 这个组件在哪个方法中被使用了,如何在JTextArea中当前显示的文本 末尾添加一行文本? 如何给一个JTextArea组件添加滚动条面板? isSelected()方法的功能是什么? 二、知识点讲解 计算机科学与技术学院网络工程教研室 u例题-CheckBoxes.java 读程序,回答问题: CheckBoxes() cb1.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) trace(“1“,cb1); ); setLayout(new FlowLayout(); JScrollPane jScrollPane=new JScrollPane(t); add(jScrollPane); /add(new JScrollPane(t); add(cb1); add(cb2); add(cb3); 二、知识点讲解 知识点之六:JFrame组件之JCheckBox 计算机科学与技术学院网络工程教研室 u例题-CheckBoxes.java 读程序,回答问题: public void trace(String b,JCheckBox cb) if(cb.isSelected() t.append(“Box “+b+“ Setn“); else t.append(“Box “+b+“ Clearedn“); 二、知识点讲解 知识点之六:JFrame组件之JCheckBox 计算机科学与技术学院网络工程教研室 知识点之六:JFrame组件之单选按钮JRadioButton u创建单选按钮对象 单选按钮组组件由一组互斥的按钮组成,同一时刻只能有一 个按钮处于选中状态。 RadioButtons() JRadioButton rb1=new JRadioButton(“one“,false); JRadioButton rb2=new JRadioButton(“two“,false); JRadioButton rb3=new JRadioButton(“three“,false); ButtonGroup b=new ButtonGroup(); b.add(rb1); b.add(rb2); b.add(rb3); add(rb1); add(rb2); add(rb3); 二、知识点讲解 计算机科学与技术学院网络工程教研室 u例题-RadioButtons.java public class RadioButtons extends JFrame JTextField t=new JTextField(15); ButtonGroup b=new ButtonGroup(); JRadioButton rb1=new JRadioButton(“one“,false), rb2=new JRadioButton(“two“,false), rb3=new JRadioButton(“three“,false); ActionListener al=new ActionListener() public void actionPerformed(ActionEvent e) t.setText(“Radio Button:“ +(JRadioButton)e.getSource().getText(); ; 知识点之六:JFrame组件之单选按钮JRadioButton 二、知识点讲解 计算机科学与技术学院网络工程教研室 u例题-RadioButtons.java public class RadioButtons extends JFrame RadioButtons() rb1.addActionListener(al); rb2.addActionListener(al); rb3.addActionListener(al); b.add(rb1); b.add(rb2); b.add(rb3); t.setEditable(false); setLayout(new FlowLayout(); add(t); add(rb1); add(rb2);add(rb3); public static void main(String args) new RadioButtons(); 知识点之六:JFrame组件之单选按钮JRadioButton 二、知识点讲解 计算机科学与技术学院网络工程教研室 u图形界面程序设计技巧 三、本章小结 在图形界面程序设计中,先认真阅读程序要求,用笔勾画 一下可能需要的程序操作界面,规划好需要用到的组件及它 们的大体排放位置。 构造方法:在图形界面程序设计中,组件的实例化,布局 ,组件事件监听器的注册等工作一般都放在构造方法中完成 。构造方法定义好后可以先在main()方法中验证一下界面中 组件的放置是否合理。 分析实现程序的逻辑流程,将程序中能够独立处理的流程 放在一个单独定义的方法中。 计算机科学与技术学院网络工程教研室 1)CustomerManagementSystem.java 四、例题讲解 u设计要求: 1)实现一个如图所示的客户管理系统的操作界面。 2)单击“插入”,“显示”,“查询”,“删除”四个按钮的时候 ,文本区里面显示“您单击了插入按钮,正在执行插入新记 录操作”。 计算机科学与技术学院网络工程教研室 1)CustomerManagementSystem.java u设计要求: 3)单击“移除组件”按钮,将“插入”,“显示”,“查询”,“删除”四个按钮 组件从JPanel中删除掉,并触发ContainerEvent事件,在文本区显示“您单 击了移除按钮,从JPanel中移除了插入,显示,删除和查询等按钮” 。 4)单击“重新放置组件”按钮,将“插入”,“显示”,“查询”,“删除”四个 按钮组件重新添加到JPanel中,并触发ContainerEvent事件,在文本区显 示“您单击了重新放置按钮,向JPanel中重新添加了插入,显示,删除和 查询等按钮”。 5)单击窗口右上角的关闭 按钮,可以将JFrame窗口 关闭掉。 四、例题讲解 计算机科学与技术学院网络工程教研室 1)CustomerManagementSystem.java u思路 1)界面设计 f = new JFrame(“客户管理子系统“); pl = new JPanel(); pl.setLayout(new GridLayout(3, 6); f.add(BorderLayout.NORTH, pl); result = new JTextArea(60, 100); result.setEditable(false); JScrollPane jScrollPane=new JScrollPane(result); f.add(BorderLayout.CENTER, jScrollPane); 类的定义 public class CustomerManagementSystem extends WindowAdapter implements ActionListener, ContainerListener 四、例题讲解 计算机科学与技术学院网络工程教研室 1)CustomerManagementSystem.java u JPanel中的第一行 JLabel label1 = new JLabel(“客户信息:“); pl.add(label1);/ pl中填加组件 JLabel label11 = new JLabel(“); pl.add(label11); JLabel label12 = new JLabel(“); pl.add(label12); JLabel label13 = new JLabel(“); pl.add(label13); JLabel label14 = new JLabel(“); pl.add(label14); JLabel label15 = new JLabel(“); pl.add(label15); 四、例题讲解 计算机科学与技术学院网络工程教研室 1)CustomerManagementSystem.java JLabel label2 = new JLabel(“客户姓名:“); pl.add(label2); name = new JTextField(12); pl.add(name); JLabel label3 = new JLabel(“客户年龄:“); pl.add(label3); age = new JTextField(4); pl.add(age); JLabel label4 = new JLabel(“客户地址:“); pl.add(label4); address = new JTextField(30); pl.add(address); u JPanel中的第二行 四、例题讲解 计算机科学与技术学院网络工程教研室 1)CustomerManagementSystem.java hidden = new JButton(“移除组件“); hidden.addActionListener(this); pl.add(hidden); expose = new JButton(“重新放置“); expose.addActionListener(this); pl.add(expose); adds = new JButton(“插入“); adds.addActionListener(this);/ 注册事件监听器 pl.add(adds); prints = new JButton(“显示“); prints.addActionListener(this); pl.add(prints); selects = new JButton(“查询“); selects.addActionListener(this); pl.add(selects); deletes = new JButton(“删除“); deletes.addActionListener(this); pl.add(deletes); pl.addContainerListener(this);/ 把pl注册给容器 事件的事件监听ContainerListener f.add(BorderLayout.NORTH, pl);/ 将pl放置在 Frame的北方向上 u JPanel中的第三行 四、例题讲解 计算机科学与技术学院网络工程教研室 1)CustomerManagementSystem.java for (int i = 0; i 4; i+) lbli = new JLabel(“); / 实例化空白标签 f.setSize(600, 300);/ 设置Frame的大小 f.setVisible(true);/ 设置Frame为可见 f.addWindowListener(this);/ 将Frame 注册给窗口事件监听者WindowListener u JPanel中的第三行 四、例题讲解 计算机科学与技术学院网络工程教研室 1)CustomerManagementSystem.java u 2.定义ActionListener接口的方法actionPerformed() public void actionPerformed(ActionEvent e) if (e.getSource() = adds) result.append(“n“); result.append(“您单击了插入按钮,正在执行插入新记录操作n“); else if (e.getSource() = prints) result.append(“n“); result.append(“您单击了显示按钮,正在执行显示记录操作n“); else if (e.getSource() = selects) result.append(“n“); result.append(“您单击了查询按钮,正在执行查询记录操作n“); else if (e.getSource() = deletes) result.append(“n“); result.append(“您单击了删除按钮,正在执行删除记录操作n“); 四、例题讲解 计算机科学与技术学院网络工程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《摔跤吧!爸爸》观后感汇编15篇
- 海水淡化工程规划设计方案(仅供参考)
- 中学时代教案课件设计规范
- 广东省四会中学、广信中学2023-2024学年高二上学期第二次月考数学含解析
- 重庆海联职业技术学院《中国现当代文学作品》2023-2024学年第二学期期末试卷
- 山西工程职业学院《制药分离工程》2023-2024学年第二学期期末试卷
- 桂林学院《新营销概论》2023-2024学年第二学期期末试卷
- 陕西学前师范学院《数字孪生与智能设计》2023-2024学年第二学期期末试卷
- 重庆信息技术职业学院《员工招聘与测评》2023-2024学年第二学期期末试卷
- 西安思源学院《企业价值创造实战》2023-2024学年第二学期期末试卷
- (完整版)医疗器械网络交易服务第三方平台质量管理文件
- 中国动漫发展史课件
- 【履职清单】2023新版安全生产责任体系重点岗位履职清单
- 门式起重机、架桥机作业前安全隐患排查表
- 安全阀在线校验及延期校验
- GB/T 19670-2023机械安全防止意外启动
- GB/T 9128.1-2023钢制管法兰用金属环垫第1部分:PN系列
- 幼儿园新生入园报名登记表
- 中国临床戒烟指南的指导意义
- (完整版)EORTC生命质量测定量表QLQ-C30(V3.0)
- 医院医学影像科CT-MR室诊疗指南和操作规范2022版
评论
0/150
提交评论