程序设计实用案例选讲(袁卫华)案例选讲第七次.ppt

上传人:牧羊曲112 文档编号:6011244 上传时间:2023-09-14 格式:PPT 页数:37 大小:458.50KB
返回 下载 相关 举报
程序设计实用案例选讲(袁卫华)案例选讲第七次.ppt_第1页
第1页 / 共37页
程序设计实用案例选讲(袁卫华)案例选讲第七次.ppt_第2页
第2页 / 共37页
程序设计实用案例选讲(袁卫华)案例选讲第七次.ppt_第3页
第3页 / 共37页
程序设计实用案例选讲(袁卫华)案例选讲第七次.ppt_第4页
第4页 / 共37页
程序设计实用案例选讲(袁卫华)案例选讲第七次.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《程序设计实用案例选讲(袁卫华)案例选讲第七次.ppt》由会员分享,可在线阅读,更多相关《程序设计实用案例选讲(袁卫华)案例选讲第七次.ppt(37页珍藏版)》请在三一办公上搜索。

1、Java图形编程(3),一、复习二、知识点讲解:1)Java的事件处理机制2)JOptionPane类的用法三、例题讲解四、小结和作业,一、复习,1.java.awt包常用的三种布局编辑类每个布局编辑类对应一种布局策略,分别是FlowLayout:流式布局管理器BorderLayout:边界布局管理器GridLayout:网格布局管理器,2.常用的控件组件,标签JLabel按钮JButton单行文本框JTextField多行文本区JTextArea,3)Java的事件处理机制,1.委托事件模型Java采用委托事件模型来进行事件处理,不同的事件由不同的监听者处理。事件源:产生事件的组件。鼠标,文

2、本框,按钮,选择项目,菜单项目等产生各种操作的对象。事件:即其所产生的动作状态。用户执行的动作:单击鼠标,按按钮,选择项目,单击菜单条,在文本框中按下回车键等。,一、复习,1.委托事件模型,3)Java的事件处理机制,一、复习,2.actionPerformed()方法的执行流程,1.当事件源上发生监听者可以处理的事件时,如鼠标单击JButton按钮或者在JTextField中敲回车键。,2.事件源JButton把这个事件(ActionEvent e)作为实际参数传递给事件监听器(类GuessNumber)中负责处理这类事件的方法(actionPerformed(ActionEvent e)3

3、.一旦有参数传递到actionPerformed方法中,这个方法就被系统自动调用执行,事件就按照程序代码中定义的流程得到了处理。,3)Java的事件处理机制,一、复习,知识点之四:事件监听器的三种形式1)主类自身是事件监听器2)定义一个内部类作为事件监听器3)定义一个匿名内部类作为事件监听器,二、知识点讲解,知识点之四:主类自身是事件监听器,二、知识点讲解,public class GuessNumber extends JFrame implements ActionListenerJButton okBtn;/确定按钮public void init()okBtn=new JButton(

4、确定);/定义JFrame中包含的组件okBtn.addActionListener(this);/注册动作事件 public void eventHandle()/触发动作事件时的处理过程public void actionPerformed(ActionEvent e)if(e.getSource()=okBtn)eventHandle();,知识点之四:定义一个内部类作为事件监听器,二、知识点讲解,在GuessNumber1类中定义一个内部类ActionEventHandler(自定义的类名)该内部类继承了动作事件监听器接口ActionListener该类中实现接口ActionListe

5、ner的方法actionPerformed()public class GuessNumber1 extends JFrame GuessNumber1()class ActionEventHandler implements ActionListener/内部类 public void actionPerformed(ActionEvent e)if(e.getSource()=okBtn)eventHandle();/该类的其他代码,知识点之四:定义一个内部类作为事件监听器,二、知识点讲解,public class GuessNumber1 extends JFrame GuessNumb

6、er1()okBtn.addActionListener(new ActionEventHandler();numJtf.addActionListener(new ActionEventHandler();class ActionEventHandler implements ActionListenerpublic void actionPerformed(ActionEvent e)/监听者是一个内部类ActionEventHandlerpublic void eventHandle()/触发动作事件时的处理过程,知识点之四:定义匿名内部类作为事件监听器,二、知识点讲解,public c

7、lass 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类体系结构,知识点之四:事件处理机制,二、知识点讲解,ActionEvent,TextEven

8、t,ItemtEvent,FocusEvent,MouseEvent,KeyEvent,WindowEvent,5.AWTEvent需要注意的问题包中定义了11个监听者接口,每个接口内部包含了若干处理相关事件的抽象方法。MouseEvent类有两个监听者接口与之相对应 MouseListener接口 具体事件包括:MOUSE_CLICKED,MOUSE_ENTERED,MOUSE_EXITED,MOUSE_PRESSED,MOUSE_RELEASEDMouseMotionListener接口 具体事件包括:MOUSE_DRAGGED,MOUSE_MOVED,知识点之四:事件处理机制,二、知识点

9、讲解,5.AWTEvent需要注意的问题一个事件类可能对应多个事件。如KeyEvent类对应三个具体事件KEY-PRESSED(键按下)KEY-RELEASED(键松开)KEY-TYPED(击键),知识点之四:事件处理机制,二、知识点讲解,6.事件监听器编程总结,实现事件监听器接口有三种途径:GuessNumber类自身是一个事件监听器设计一个内部类作为一个事件监听器匿名内部类实现事件监听器很多教材和参考书中建议为事件处理设计一个专门的内部类,而不要将一个已经存在的类转换为监听器。,二、知识点讲解,知识点之四:事件处理机制,知识点之五:JOptionPane类的用法,创建简单对话框,这个对话框

10、将位于parent组件的中央,如果parent为null,对话框将显示在屏幕的中央。Java中创建简单对话框不用JDialog类,而用类JOptionPane的静态方法即可。需要提供对话框需要的参数。简单对话框有4种,方法名的形式都是showXXXDialog。消息框showMessageDialog的用法:JOptionPane.showMessageDialog(所属Frame,消息本身,对话框标题,图形标志常量)如GuessNumber.java中的eventHandle()方法:,二、知识点讲解,public void eventHandle()tryuserInt=Integer.p

11、arseInt(numJtf.getText().trim();catch(NumberFormatException ex)JOptionPane.showMessageDialog(this,请将您猜得的整数输入到文本框中!);numJtf.setText();numJtf.requestFocus();,二、知识点讲解,知识点之五:JOptionPane类的用法,问题JOptionPane.showMessageDialog(null,请将您猜得的整数输入到文本框中!);JOptionPane.showMessageDialog(this,请将您猜得的整数输入到文本框中!);上面两条语句

12、的执行结果有什么区别?,二、知识点讲解,知识点之五:JOptionPane类的用法,4)JFrame组件之JCheckBox,复选框JCheckBoxJCheckBox cb1=new JCheckBox(Check Box 1);JCheckBox cb2=new JCheckBox(Check Box 2);JCheckBox cb3=new JCheckBox(Check Box 3);每个复选框有两种状态:选中状态和未选中状态。常用方法1)getState():返回用户在复选框所做的选择,如果复选框被选中,该方法返回值为true;如果复选框未被选中,该方法返回值为false。2)set

13、State():设置复选框。bold.setState(true);设置bold为选中状态。,二、知识点讲解,知识点之六:JFrame组件之JCheckBox,例题-CheckBoxes.java读程序,回答问题:程序的运行界面是什么样子的?JCheckBox组件可以触发什么事件?组件向相应的事件监听器进行注册的时候采用的是三种途径中的哪种方法?类中定义了一个JTextArea组件t,JTextArea t=new JTextArea(6,15);这个组件在哪个方法中被使用了,如何在JTextArea中当前显示的文本末尾添加一行文本?如何给一个JTextArea组件添加滚动条面板?isSele

14、cted()方法的功能是什么?,二、知识点讲解,例题-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)

15、;,二、知识点讲解,知识点之六:JFrame组件之JCheckBox,例题-CheckBoxes.java读程序,回答问题:,public void trace(String b,JCheckBox cb)if(cb.isSelected()t.append(Box+b+Setn);elset.append(Box+b+Clearedn);,二、知识点讲解,知识点之六:JFrame组件之JCheckBox,知识点之六:JFrame组件之单选按钮JRadioButton,创建单选按钮对象单选按钮组组件由一组互斥的按钮组成,同一时刻只能有一个按钮处于选中状态。RadioButtons()JRadi

16、oButton 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);,二、知识点讲解,例题-RadioButtons.javapublic class RadioButtons extends JFrame JTextF

17、ield t=new JTextField(15);ButtonGroup b=new ButtonGroup();JRadioButtonrb1=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().

18、getText();,知识点之六:JFrame组件之单选按钮JRadioButton,二、知识点讲解,例题-RadioButtons.javapublic 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)

19、;add(rb2);add(rb3);public static void main(String args)new RadioButtons();,知识点之六:JFrame组件之单选按钮JRadioButton,二、知识点讲解,图形界面程序设计技巧,三、本章小结,在图形界面程序设计中,先认真阅读程序要求,用笔勾画一下可能需要的程序操作界面,规划好需要用到的组件及它们的大体排放位置。构造方法:在图形界面程序设计中,组件的实例化,布局,组件事件监听器的注册等工作一般都放在构造方法中完成。构造方法定义好后可以先在main()方法中验证一下界面中组件的放置是否合理。分析实现程序的逻辑流程,将程序中能

20、够独立处理的流程放在一个单独定义的方法中。,1)CustomerManagementSystem.java,四、例题讲解,设计要求:1)实现一个如图所示的客户管理系统的操作界面。2)单击“插入”,“显示”,“查询”,“删除”四个按钮的时候,文本区里面显示“您单击了插入按钮,正在执行插入新记录操作”。,1)CustomerManagementSystem.java,设计要求:3)单击“移除组件”按钮,将“插入”,“显示”,“查询”,“删除”四个按钮组件从JPanel中删除掉,并触发ContainerEvent事件,在文本区显示“您单击了移除按钮,从JPanel中移除了插入,显示,删除和查询等按钮

21、”。4)单击“重新放置组件”按钮,将“插入”,“显示”,“查询”,“删除”四个按钮组件重新添加到JPanel中,并触发ContainerEvent事件,在文本区显示“您单击了重新放置按钮,向JPanel中重新添加了插入,显示,删除和查询等按钮”。,5)单击窗口右上角的关闭按钮,可以将JFrame窗口关闭掉。,四、例题讲解,1)CustomerManagementSystem.java,思路1)界面设计,f=new JFrame(客户管理子系统);pl=new JPanel();pl.setLayout(new GridLayout(3,6);f.add(BorderLayout.NORTH,p

22、l);,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,JPanel

23、中的第一行,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)CustomerM

24、anagementSystem.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);,JPanel中的第二行,四、例题讲解,1)Cu

25、stomerManagementSystem.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.ad

26、d(prints);selects=new JButton(查询);selects.addActionListener(this);pl.add(selects);deletes=new JButton(删除);deletes.addActionListener(this);pl.add(deletes);pl.addContainerListener(this);/把pl注册给容器事件的事件监听ContainerListenerf.add(BorderLayout.NORTH,pl);/将pl放置在Frame的北方向上,JPanel中的第三行,四、例题讲解,1)CustomerManagem

27、entSystem.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,JPanel中的第三行,四、例题讲解,1)CustomerManagementSystem.java,2.定义ActionListener接口的方法actionPerformed(),public void actionPerformed(Ac

28、tionEvent 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);

29、result.append(您单击了删除按钮,正在执行删除记录操作n);,四、例题讲解,1)CustomerManagementSystem.java,2.定义ActionListener接口的方法actionPerformed(),public void actionPerformed(ActionEvent e)else if(e.getSource()=hidden)/如果单击了移除组件按钮,将下述四个按钮组件从panel中移除for(int i=0;i 4;i+)pl.add(lbli);pl.remove(adds);pl.remove(prints);pl.remove(selec

30、ts);pl.remove(deletes);pl.validate();else if(e.getSource()=expose),四、例题讲解,1)CustomerManagementSystem.java,2.定义ActionListener接口的方法actionPerformed(),public void actionPerformed(ActionEvent e)else if(e.getSource()=expose)/如果单击了添加组件按钮,将下述四个按钮组件重新添加到panel中pl.add(adds);pl.add(prints);pl.add(selects);pl.ad

31、d(deletes);for(int i=0;i 4;i+)pl.remove(lbli);pl.validate();,四、例题讲解,1)CustomerManagementSystem.java,3.定义addContainerListener接口的方法,public void componentRemoved(ContainerEvent e)/从Panel中移除组件时触发result.append(n);result.append(您单击了移除按钮,从panle中移除了插入,显示,删除和查询等按钮n);public void componentAdded(ContainerEvent e)/向Panel中添加组件时触发result.append(n);result.append(您单击了重新放置按钮,向panel中重新添加了插入,显示,删除和查询等按钮n);,四、例题讲解,作业详见实验指导书。,五、小结和作业,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号