




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java图形编程(3),一、复习二、知识点讲解:1)Java的事件处理机制2)JOptionPane类的用法三、例题讲解四、小结和作业,一、复习,1.java.awt包常用的三种布局编辑类每个布局编辑类对应一种布局策略,分别是FlowLayout:流式布局管理器BorderLayout:边界布局管理器GridLayout:网格布局管理器,2.常用的控件组件,标签JLabel按钮JButton单行文本框JTextField多行文本区JTextArea,3)Java的事件处理机制,1.委托事件模型Java采用委托事件模型来进行事件处理,不同的事件由不同的监听者处理。事件源:产生事件的组件。鼠标,文本框,按钮,选择项目,菜单项目等产生各种操作的对象。事件:即其所产生的动作状态。用户执行的动作:单击鼠标,按按钮,选择项目,单击菜单条,在文本框中按下回车键等。,一、复习,1.委托事件模型,3)Java的事件处理机制,一、复习,2.actionPerformed()方法的执行流程,1.当事件源上发生监听者可以处理的事件时,如鼠标单击JButton按钮或者在JTextField中敲回车键。,2.事件源JButton把这个事件(ActionEvente)作为实际参数传递给事件监听器(类GuessNumber)中负责处理这类事件的方法(actionPerformed(ActionEvente)3.一旦有参数传递到actionPerformed方法中,这个方法就被系统自动调用执行,事件就按照程序代码中定义的流程得到了处理。,3)Java的事件处理机制,一、复习,知识点之四:事件监听器的三种形式1)主类自身是事件监听器2)定义一个内部类作为事件监听器3)定义一个匿名内部类作为事件监听器,二、知识点讲解,知识点之四:主类自身是事件监听器,二、知识点讲解,publicclassGuessNumberextendsJFrameimplementsActionListenerJButtonokBtn;/确定按钮publicvoidinit()okBtn=newJButton(确定);/定义JFrame中包含的组件okBtn.addActionListener(this);/注册动作事件publicvoideventHandle()/触发动作事件时的处理过程publicvoidactionPerformed(ActionEvente)if(e.getSource()=okBtn)eventHandle();,知识点之四:定义一个内部类作为事件监听器,二、知识点讲解,在GuessNumber1类中定义一个内部类ActionEventHandler(自定义的类名)该内部类继承了动作事件监听器接口ActionListener该类中实现接口ActionListener的方法actionPerformed()publicclassGuessNumber1extendsJFrameGuessNumber1()classActionEventHandlerimplementsActionListener/内部类publicvoidactionPerformed(ActionEvente)if(e.getSource()=okBtn)eventHandle();/该类的其他代码,知识点之四:定义一个内部类作为事件监听器,二、知识点讲解,publicclassGuessNumber1extendsJFrameGuessNumber1()okBtn.addActionListener(newActionEventHandler();numJtf.addActionListener(newActionEventHandler();classActionEventHandlerimplementsActionListenerpublicvoidactionPerformed(ActionEvente)/监听者是一个内部类ActionEventHandlerpublicvoideventHandle()/触发动作事件时的处理过程,知识点之四:定义匿名内部类作为事件监听器,二、知识点讲解,publicclassGuessNumber3extendsJFramepublicvoidGuessNumber3(),okBtn.addActionListener(newActionListener()publicvoidactionPerformed(ActionEvente)if(e.getSource()=okBtn)eventHandle();elseif(e.getSource()=numJtf)eventHandle(););/使用匿名内部内注册动作事件,4.AWTEvent类体系结构,知识点之四:事件处理机制,二、知识点讲解,ActionEvent,TextEvent,ItemtEvent,FocusEvent,MouseEvent,KeyEvent,WindowEvent,5.AWTEvent需要注意的问题java.awt.event包中定义了11个监听者接口,每个接口内部包含了若干处理相关事件的抽象方法。MouseEvent类有两个监听者接口与之相对应MouseListener接口具体事件包括:MOUSE_CLICKED,MOUSE_ENTERED,MOUSE_EXITED,MOUSE_PRESSED,MOUSE_RELEASEDMouseMotionListener接口具体事件包括:MOUSE_DRAGGED,MOUSE_MOVED,知识点之四:事件处理机制,二、知识点讲解,5.AWTEvent需要注意的问题一个事件类可能对应多个事件。如KeyEvent类对应三个具体事件KEY-PRESSED(键按下)KEY-RELEASED(键松开)KEY-TYPED(击键),知识点之四:事件处理机制,二、知识点讲解,6.事件监听器编程总结,实现事件监听器接口有三种途径:GuessNumber类自身是一个事件监听器设计一个内部类作为一个事件监听器匿名内部类实现事件监听器很多教材和参考书中建议为事件处理设计一个专门的内部类,而不要将一个已经存在的类转换为监听器。,二、知识点讲解,知识点之四:事件处理机制,知识点之五:JOptionPane类的用法,创建简单对话框,这个对话框将位于parent组件的中央,如果parent为null,对话框将显示在屏幕的中央。Java中创建简单对话框不用JDialog类,而用类JOptionPane的静态方法即可。需要提供对话框需要的参数。简单对话框有4种,方法名的形式都是showXXXDialog。消息框showMessageDialog的用法:JOptionPane.showMessageDialog(所属Frame,消息本身,对话框标题,图形标志常量)如GuessNumber.java中的eventHandle()方法:,二、知识点讲解,publicvoideventHandle()tryuserInt=Integer.parseInt(numJtf.getText().trim();catch(NumberFormatExceptionex)JOptionPane.showMessageDialog(this,请将您猜得的整数输入到文本框中!);numJtf.setText();numJtf.requestFocus();,二、知识点讲解,知识点之五:JOptionPane类的用法,问题JOptionPane.showMessageDialog(null,请将您猜得的整数输入到文本框中!);JOptionPane.showMessageDialog(this,请将您猜得的整数输入到文本框中!);上面两条语句的执行结果有什么区别?,二、知识点讲解,知识点之五:JOptionPane类的用法,4)JFrame组件之JCheckBox,复选框JCheckBoxJCheckBoxcb1=newJCheckBox(CheckBox1);JCheckBoxcb2=newJCheckBox(CheckBox2);JCheckBoxcb3=newJCheckBox(CheckBox3);每个复选框有两种状态:选中状态和未选中状态。常用方法1)getState():返回用户在复选框所做的选择,如果复选框被选中,该方法返回值为true;如果复选框未被选中,该方法返回值为false。2)setState():设置复选框。bold.setState(true);设置bold为选中状态。,二、知识点讲解,知识点之六:JFrame组件之JCheckBox,例题-CheckBoxes.java读程序,回答问题:程序的运行界面是什么样子的?JCheckBox组件可以触发什么事件?组件向相应的事件监听器进行注册的时候采用的是三种途径中的哪种方法?类中定义了一个JTextArea组件t,JTextAreat=newJTextArea(6,15);这个组件在哪个方法中被使用了,如何在JTextArea中当前显示的文本末尾添加一行文本?如何给一个JTextArea组件添加滚动条面板?isSelected()方法的功能是什么?,二、知识点讲解,例题-CheckBoxes.java读程序,回答问题:,CheckBoxes()cb1.addActionListener(newActionListener()publicvoidactionPerformed(ActionEvente)trace(1,cb1););setLayout(newFlowLayout();JScrollPanejScrollPane=newJScrollPane(t);add(jScrollPane);/add(newJScrollPane(t);add(cb1);add(cb2);add(cb3);,二、知识点讲解,知识点之六:JFrame组件之JCheckBox,例题-CheckBoxes.java读程序,回答问题:,publicvoidtrace(Stringb,JCheckBoxcb)if(cb.isSelected()t.append(Box+b+Setn);elset.append(Box+b+Clearedn);,二、知识点讲解,知识点之六:JFrame组件之JCheckBox,知识点之六:JFrame组件之单选按钮JRadioButton,创建单选按钮对象单选按钮组组件由一组互斥的按钮组成,同一时刻只能有一个按钮处于选中状态。RadioButtons()JRadioButtonrb1=newJRadioButton(one,false);JRadioButtonrb2=newJRadioButton(two,false);JRadioButtonrb3=newJRadioButton(three,false);ButtonGroupb=newButtonGroup();b.add(rb1);b.add(rb2);b.add(rb3);add(rb1);add(rb2);add(rb3);,二、知识点讲解,例题-RadioButtons.javapublicclassRadioButtonsextendsJFrameJTextFieldt=newJTextField(15);ButtonGroupb=newButtonGroup();JRadioButtonrb1=newJRadioButton(one,false),rb2=newJRadioButton(two,false),rb3=newJRadioButton(three,false);ActionListeneral=newActionListener()publicvoidactionPerformed(ActionEvente)t.setText(RadioButton:+(JRadioButton)e.getSource().getText();,知识点之六:JFrame组件之单选按钮JRadioButton,二、知识点讲解,例题-RadioButtons.javapublicclassRadioButtonsextendsJFrameRadioButtons()rb1.addActionListener(al);rb2.addActionListener(al);rb3.addActionListener(al);b.add(rb1);b.add(rb2);b.add(rb3);t.setEditable(false);setLayout(newFlowLayout();add(t);add(rb1);add(rb2);add(rb3);publicstaticvoidmain(Stringargs)newRadioButtons();,知识点之六:JFrame组件之单选按钮JRadioButton,二、知识点讲解,图形界面程序设计技巧,三、本章小结,在图形界面程序设计中,先认真阅读程序要求,用笔勾画一下可能需要的程序操作界面,规划好需要用到的组件及它们的大体排放位置。构造方法:在图形界面程序设计中,组件的实例化,布局,组件事件监听器的注册等工作一般都放在构造方法中完成。构造方法定义好后可以先在main()方法中验证一下界面中组件的放置是否合理。分析实现程序的逻辑流程,将程序中能够独立处理的流程放在一个单独定义的方法中。,1)CustomerManagementSystem.java,四、例题讲解,设计要求:1)实现一个如图所示的客户管理系统的操作界面。2)单击“插入”,“显示”,“查询”,“删除”四个按钮的时候,文本区里面显示“您单击了插入按钮,正在执行插入新记录操作”。,1)CustomerManagementSystem.java,设计要求:3)单击“移除组件”按钮,将“插入”,“显示”,“查询”,“删除”四个按钮组件从JPanel中删除掉,并触发ContainerEvent事件,在文本区显示“您单击了移除按钮,从JPanel中移除了插入,显示,删除和查询等按钮”。4)单击“重新放置组件”按钮,将“插入”,“显示”,“查询”,“删除”四个按钮组件重新添加到JPanel中,并触发ContainerEvent事件,在文本区显示“您单击了重新放置按钮,向JPanel中重新添加了插入,显示,删除和查询等按钮”。,5)单击窗口右上角的关闭按钮,可以将JFrame窗口关闭掉。,四、例题讲解,1)CustomerManagementSystem.java,思路1)界面设计,f=newJFrame(客户管理子系统);pl=newJPanel();pl.setLayout(newGridLayout(3,6);f.add(BorderLayout.NORTH,pl);,result=newJTextArea(60,100);result.setEditable(false);JScrollPanejScrollPane=newJScrollPane(result);f.add(BorderLayout.CENTER,jScrollPane);,类的定义publicclassCustomerManagementSystemextendsWindowAdapterimplementsActionListener,ContainerListener,四、例题讲解,1)CustomerManagementSystem.java,JPanel中的第一行,JLabellabel1=newJLabel(客户信息:);pl.add(label1);/pl中填加组件JLabellabel11=newJLabel();pl.add(label11);JLabellabel12=newJLabel();pl.add(label12);JLabellabel13=newJLabel();pl.add(label13);JLabellabel14=newJLabel();pl.add(label14);JLabellabel15=newJLabel();pl.add(label15);,四、例题讲解,1)CustomerManagementSystem.java,JLabellabel2=newJLabel(客户姓名:);pl.add(label2);name=newJTextField(12);pl.add(name);JLabellabel3=newJLabel(客户年龄:);pl.add(label3);age=newJTextField(4);pl.add(age);JLabellabel4=newJLabel(客户地址:);pl.add(label4);address=newJTextField(30);pl.add(address);,JPanel中的第二行,四、例题讲解,1)CustomerManagementSystem.java,hidden=newJButton(移除组件);hidden.addActionListener(this);pl.add(hidden);expose=newJButton(重新放置);expose.addActionListener(this);pl.add(expose);adds=newJButton(插入);adds.addActionListener(this);/注册事件监听器pl.add(adds);prints=newJButton(显示);prints.addActionListener(this);pl.add(prints);selects=newJButton(查询);selects.addActionListener(this);pl.add(selects);deletes=newJButton(删除);deletes.addActionListener(this);pl.add(deletes);pl.addContainerListener(this);/把pl注册给容器事件的事件监听ContainerListenerf.add(BorderLayout.NORTH,pl);/将pl放置在Frame的北方向上,JPanel中的第三行,四、例题讲解,1)CustomerManagementSystem.java,for(inti=0;i4;i+)lbli=newJLabel();/实例化空白标签f.setSize(600,300);/设置Frame的大小f.setVisible(true);/设置Frame为可见f.addWindowListener(this);/将Frame注册给窗口事件监听者WindowListener,JPanel中的第三行,四、例题讲解,1)CustomerManagementSystem.java,2.定义ActionListener接口的方法actionPerformed(),publicvoidactionPerformed(ActionEvente)if(e.getSource()=adds)result.append(n);result.append(您单击了插入按钮,正在执行插入新记录操作n);elseif(e.getSource()=prints)result.append(n);result.append(您单击了显示按钮,正在执行显示记录操作n);elseif(e.getSource()=selects)result.append(n);result.append(您单击了查询按钮,正在执行查询记录操作n);elseif(e.getSource()=deletes)result.append(n);result.append(您单击了删除按钮,正在执行删除记录操作n);,四、例题讲解,1)CustomerManagementSystem.ja
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跌倒应急预案解释
- 4《这是谁的叶》(教学设计)-一年级上册科学教科版
- xx市燃气管道及设施改造项目环境影响报告书
- 阿伏加德罗常数应用综合试题
- 八年级生物下册 6.4 现代生物技术说课稿 (新版)冀教版
- 走进职业世界说课稿-2023-2024学年初中综合实践活动九年级第二学期沪科版(贵州专用)
- 浙江水帘施工方案新
- 河北定制钢板库施工方案
- 2025年新能源品牌建设与市场推广策略报告:技术创新引领行业新格局
- 银行柜面应急预案
- 辽宁省名校联盟2025-2026学年高三上学期9月联合考试数学试题(无答案)
- 2025-2030中国农机金融租赁业务模式创新与风险定价策略报告
- 与保密有关培训课件
- 2025-2030年中国抽油机行业市场现状供需分析及投资评估规划分析研究报告
- 医用废弃口罩管理制度
- 大米先生公司管理制度
- 高考英语一轮专项复习:高考试题中的熟词生义(含解析)
- 部编版四年级上册语文大单元教学设计范例
- 第三单元整体阅读之人物篇 统编版高中语文选择性必修上册
- 高二上学期第一次月考物理试卷(附答题卷和答案)
- 教育培训机构合作培训协议
评论
0/150
提交评论