ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:61.90KB ,
资源ID:5873730      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5873730.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验四Java事件处理汽院含答案汇总.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验四Java事件处理汽院含答案汇总.docx

1、实验四 Java事件处理汽院含答案汇总实验四 Java事件处理实验目的1 掌握Java语言中的事件处理方法2 掌握Java语言中事件源、监视器和处理事件的接口的概念实验导读1 Java事件处理简介学习组件除了了解组件的属性和功能外,学习组件除了了解组件的属性和功能外,一个更重要的方面是学习怎样处理组件上发生的界面事件。 当用户在文本框中输入文本后按Enter键、单击按钮、在一个下拉列表框中选择一个条目等操作时,都发生界面事件。在学习处理事件时,必须很好地掌握事件源、监视器、处理事件的接口这三个概念。 事件源:能够产生事件的对象都可以成为事件源,如文本框、按钮、下拉式列表等。也就是说,事件源必须

2、是一个对象,而且这个对象必须是Java认为能够发生事件的对象。 监视器:需要一个对象对事件源进行监视,以便对发生的事件作出处理。事件源通过调用相应的方法将某个对象作为自己的监视器。例如,对于文本框,这个方法是:addActionListener(监视器); 对于获取了监视器的文本框,当文本框获得输入焦点之后,如果用户按Enter键,Java运行系统就自动用ActionEvent类创建一个对象,即发生了ActionEvent事件。也就是说,事件源获得监视器后,相应的操作就会导致事件的发生,并通知监视器,监视器就会做出相应的处理。 处理事件的接口:监视器负责处理事件源发生的事件。监视器是一个对象,

3、为了让监视器这个对象能对事件源发生的事件进行处理,创建该监视器对象的类必须声明实现相应的接口,即必须在类体中给出该接口中所有方法的方法体,那么当事件源发生事件时,监视器就自动调用类实现的某个接口中的方法。2 文本框上的ActionEvent事件java.awt.event包中提供了许多事件类和处理各种事件的接口。对于文本框,这个接口的名字是ActionListener,这个接口中只有一个方法:public void actionPerformed(ActionEvent e)当在文本框中输入字符并按Enter键时,java.awt.event包中的ActionEvent类自动创建一个事件对象,

4、并将它传递给actionPerformed(ActionEvent e)方法中的参数e,监视器自动调用这个方法对发生的事件做出处理。所以,称文本框这个事件源可以发生ActionEvent类型事件。为了能监视到这种类型的事件,事件源必须使用addActionListener方法获得监视器;创建监视器的类必须实现接口ActionListener。只要学会了处理文本框这个组件上的事件,其他事件源上的事件的处理也就很容易学会,所不同的是事件源能发生的事件类型不同,所使用的接口不同而已。ActionEvent类有如下常用的方法: public Object getSource() ActionEvent

5、对象调用该方法可以获取发生ActionEvent事件的事件源对象的引用,即getSource()方法将事件源上转型为Object对象,并返回这个上转型对象的引用。 public String getActionCommand() ActionEvent对象调用该方法可以获取发生ActionEvent事件时,和该事件相关的一个命令字符串,对于文本框,当发生ActionEvent事件时,文本框中的文本字符串就是和该事件相关的一个命令字符串。3 选择框和下拉列表上的ItemEvent事件选择框从未选中状态变成选中状态或从选中状态变成未选中状态时、下拉列表选项列表中选中某个选项时就发生ItemEven

6、t事件,即ItemEvent类自动创建一个事件对象。发生ItemEvent事件的事件源获得监视器的方法是addItemListener(监视器)。处理ItemEvent事件的接口是ItemListener,创建监视器的类必须实现ItemListener接口,该接口中只有一个方法。当选择框发生ItemEvent事件时,监视器将自动调用接口方法:itemStateChanged(ItemEvent e)对发生的事件进行处理。4 鼠标事件任何组件上都可以发生鼠标事件,如:鼠标进入组件、退出组件、在组件上方单击鼠标、拖动鼠标等都触发组件发生鼠标事件,也就是说,组件可以成为发生鼠标事件的事件源。使用Mo

7、useListener接口可以处理5种操作触发的鼠标事件:(1)在事件源上按下鼠标键。(2)在事件源上释放鼠标键。(3)在事件源上击鼠标键。(4)鼠标进入事件源。(5)鼠标退出事件源。鼠标事件的类型是MouseEvent,即当发生鼠标事件时,MouseEvent类自动创建一个事件对象。MouseListener接口中的方法:(1)mousePressed(MouseEvent) 负责处理在组件上按下鼠标触发的鼠标事件,当在组件上按下鼠标时,监视器将自动调用接口中的这个方法对事件作出处理。(2)mouseReleased(MouseEvent) 负责处理在组件上释放鼠标触发的鼠标事件,当在组件上

8、释放鼠标时,监视器将自动调用接口中的这个方法对事件作出处理。(3)mouseEntered(MouseEvent) 负责处理鼠进入组件触发的鼠标事件,当鼠标进入组件上方时,监视器将自动调用接口中的这个方法对事件作出处理。(4)mouseExited(MouseEvent) 负责处理鼠标离开组件触发的鼠标事件,当鼠标离开组件时,监视器自动调用接口中的这个方法对事件作出处理。(5)mouseClicked(MouseEvent) 负责处理在组件上单击或连击鼠标触发的鼠标事件,当单击或连击鼠标时,监视器自动调用接口中的这个方法对事件作出处理。MouseMotionListener接口:使用Mouse

9、MotionListener接口可以处理以下两种操作触发的鼠标事件:(1)在事件源上拖动鼠标。(2)在事件源上移动鼠标。MouseMotionListener接口中有如下方法:(1)mouseDragged(MouseEvent) 负责处理在组件上拖动鼠标触发的鼠标事件,当在组件上拖动鼠标时,监视器调用接口中的这个方法对事件作出处理。(2)mouseMoved(MouseEvent) 负责处理在组件上运动鼠标触发的鼠标事件,当在组件上运动鼠标时,监视器调用接口中的这个方法对事件作出处理5 焦点事件组件可以触发焦点事件。组件可以使用 public void addFocusListener(Fo

10、cusListener listener) 增加焦点事件监视器。当组件获得焦点监视器后,如果组件从无输入焦点变成有输入焦点或从有输入焦点变成无输入焦点都会触发FocusEvent事件。创建监视器的类必须要实现FocusListener 接口,该接口有两个方法: public void focusGained(FocusEvent e) public void focusLost(FocusEvent e)当组件从无输入焦点变成有输入焦点触发FocusEvent事件时,监视器调用类实现的接口方法:focusGained(FocusEvent e);当组件从有输入焦点变成无输入焦点触发FocusE

11、vent事件时,监视器调用类实现的接口方法:focusLost(FocusEvent e)。用户通过单击组件可以使得该组件有输入焦点,同时也使得其他组件变成无输入焦点。一个组件也可以调用public boolean requestFocusInWindow()方法获得输入焦点。6 键盘事件当按下、释放或敲击键盘上一个键时就发生了键盘事件,在Java1.2事件模式中,必须要有发生事件的事件源。当一个组件处于激活状态时,敲击键盘上一个键就导致这个组件上发生了键盘事件。事件源使用addKeyListener方法获得监视器。 使用KeyListener接口处理键盘事件 .接口KeyListener中有

12、3个方法: public void keyPressed(KeyEvent e), public void keyTyped(KeyEvent e), public void KeyReleased(KeyEvent e)。当按下键盘上某个键时,监视器就会发现,然后keyPressed方法会自动执行,并且KeyEvent类自动创建一个对象传递给keyPressed方法中的参数e。keyTyped方法是keyPressed和KeyReleased方法的组合,当键被按下又释放时,keyTyped方法被调用。用KeyEvent类的public int getKeyCode()方法,可以判断哪个键被按

13、下、敲击或释放,getKeyCode方法返回一个键码值。也可以用KeyEvent类的public char getKeyChar()判断哪个键被按下、敲击或释放,getKeyChar方法返回键上的字符。键盘事件KeyEvent对象调用getModifiers()方法,可以返回整数值ALT_MASK、CTRL_MASK、SHIFT_MASK,它们分别是InputEvent类的类常量。程序可以通过getModifiers()方法返回的值处理组合键事件。例如,对于KeyEvent对象e,当按下CTRL+X组合键时,下面的逻辑表达式为true:e. getModifiers() = InputEven

14、t.CTRL_MASK&e.getKeyCode() = keyEvent.VK_XJava事件处理就是基于这种授权模式,即发生相应事件的事件源对象,比如sourceObject,通过调用相应的方法:sourceObject. addXXXListener(监视器);将某个对象作为自己的监视器。创建监视器对象的类必须声明实现相应的事件接口:class A implements XXXListener当事件源发生事件时,监视器将调用接口中相应的方法做出处理。Java使用了接口回调技术设计了它的处理事件模式,注意到addXXXListener(XXXListener listener) 方法中的参

15、数是一个接口类型,listener可以引用任何实现了XXXListener接口的类所创建的对象,当事件源发生事件时,接口listener立刻回调类实现的接口中的某个方法。事件的处理过程如下图所示:图 事件处理示意图内部类实例做监视器:Java支持在一个类中声明另一个类,这样的类成为内部类,而包含内部类的类成为内部类的外嵌类,外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法。匿名类是内部类的特殊情形,即省略类声明,可以直接用类体创建对象,因此,可以使用匿名内部类的对象做监视器。例如:xxx.addActionListener(new ActionListener() O

16、verride public void actionPerformed(ActionEvent e) );实验内容1. 图形用户界面设计程序(ArtFont.java)在实验三第1题的基础上,添加事件处理机制,并逐步完善程序功能。分别用ArtFont类的对象做监视器和匿名内部类的对象做监视器实现。要求实现如下功能: 当在文本框中输入文字后回车,在文本域中显示输入的文字。 当分别选择粗体和斜体复选框时,文本域中的文字分别显示粗体和斜体样式。 当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按确定按钮后,按钮的前景色和文本域的前景色设置为选定的颜色。 当选择字体样式下拉框中的某一字体样式时,

17、文本域中的文字设置为指定的字体样式。 当选择字体大小下拉框中的某一字体大小时,文本域中的文字设置为指定的字体大小。 当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指定的窗体外观。代码提示:1) 用ArtFont类的对象做监视器public class CopyOfArtFont extends JFrame implements ActionListener, ItemListener JComboBox windowStyle;/ 窗体样式下拉框 JCheckBox boldBx;/ 粗体按钮 JButton colorBtn;/ 颜色按钮 JTextField inputText;

18、/ 文字输入框 private JPanel getNorthPanel() JPanel panel = new JPanel(); inputText.addActionListener(this); colorBtn.addActionListener(this); return panel; private JPanel getCenterPanel() JPanel panel = new JPanel(); boldBx.addItemListener(this); return panel; private JPanel getSouthPanel() JPanel panel

19、= new JPanel(); windowStyle.addItemListener(this); return panel; Override public void itemStateChanged(ItemEvent e) if(e.getSource() = windowStyle) String s = (String) e.getItem(); String className = ; if (s.equals(Windows显示效果) className = com.sun.java.swing.plaf.windows.WindowsLookAndFeel; else if

20、(s.equals(Unix显示效果) className = com.sun.java.swing.plaf.motif.MotifLookAndFeel; else if (s.equals(默认显示效果) className = UIManager.getCrossPlatformLookAndFeelClassName(); try UIManager.setLookAndFeel(className); SwingUtilities.updateComponentTreeUI(this); catch (Exception de) System.out.println(Excepti

21、on happened!); Override public void actionPerformed(ActionEvent e) 2) 用匿名内部类的对象做监视器public class CopyOfArtFont extends JFrame JComboBox fontType;/ 字体样式下拉框, JCheckBox boldBx;/ 粗体按钮 JButton colorBtn;/ 颜色按钮; JTextField inputText;/ 文字输入框; private JPanel getNorthPanel() JPanel panel = new JPanel(); inputT

22、ext.addActionListener(new ActionListener() Override public void actionPerformed(ActionEvent e) ); return panel; private JPanel getCenterPanel() JPanel panel = new JPanel(); boldBx.addItemListener(new ItemListener() Override public void itemStateChanged(ItemEvent e) ); return panel; private JPanel ge

23、tSouthPanel() JPanel panel = new JPanel(); fontType.addItemListener(new ItemListener() Override public void itemStateChanged(ItemEvent e) ); return panel; 答案代码:import javax.swing.*;import java.awt.*;import javax.swing.event.*;import java.awt.event.*;public class ArtFont extends JFrame implements Key

24、Listener,ChangeListener,ItemListener,ActionListener JComboBox fontType;/字体样式下拉框, JComboBox fontSize;/字体大小下拉框 JComboBox windowStyle;/窗体样式下拉框 JCheckBox boldBx;/ 粗体按钮 JCheckBox italicBx;/ 斜体按钮 JButton colorBtn;/ 颜色按钮; String fontNames;/ 字体名称; String fontSizes;/ 字体大小; JLabel label;/ 输入提示标签; JTextField i

25、nputText;/ 文字输入框; JTextArea txtArea;/ 文字显示区; JPanel northPanel;/ 字体设置; JPanel centerPanel;/ 显示效果区 JPanel southPanel;/样式设置 Font font; int boldStyle, italicStyle, underlineStyle; int fontSizeStyle; String fontNameStyle; Color colorStyle = Color.black;/ 设置字体的默认颜色为黑色; String style = 默认显示效果, Windows显示效果,

26、 Unix显示效果 ; public ArtFont() super(字体设置); / 设置默认字体 boldStyle = 0; italicStyle = 0; underlineStyle = 0; fontSizeStyle = 10; fontNameStyle = 宋体; font = new Font(fontNameStyle, boldStyle + italicStyle, fontSizeStyle); northPanel = getNorthPanel(); centerPanel = getCenterPanel(); southPanel = getSouthPa

27、nel(); / 设置容器; Container container = getContentPane(); container.setLayout(new BorderLayout(); container.add(northPanel,BorderLayout.NORTH); /【补充代码】/将northPanel添加到窗体的北部 container.add(centerPanel,BorderLayout.CENTER); /【补充代码】/将centerPanel添加到窗体的北部 container.add(southPanel,BorderLayout.SOUTH); /【补充代码】/

28、将southPanel添加到窗体的北部 setSize(500, 300); /【补充代码】/将窗体位于屏幕的中央 setLocationRelativeTo(null); setVisible(true); private JPanel getNorthPanel() JPanel panel = new JPanel(); label = new JLabel(输入,JLabel.LEFT); / 设置输入提示标签 panel.add(label); / 设置文本输入框; inputText=new JTextField(10); panel.add(inputText); / input

29、Text.addActionListener(this); boldBx=new JCheckBox(粗体); panel.add(boldBx); italicBx=new JCheckBox(斜体); panel.add(italicBx); colorBtn=new JButton(颜色); panel.add(colorBtn); return panel; private JPanel getCenterPanel() JPanel panel = new JPanel(); panel.setLayout(new BorderLayout(); txtArea=new JTextA

30、rea(); panel.add(txtArea,BorderLayout.CENTER); return panel; private JPanel getSouthPanel() JPanel panel = new JPanel(); GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment(); fontNames=ge.getAvailableFontFamilyNames();/ 获得系统中所有字体的名字; fontType=new JComboBox(fontNames); fontType.setEditable(false); fontType.setMaximumRowCount(10); panel.add(fontType); fontSizes=new String63; for(int i=0;i63

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1