java事件处理
Java异常(Exception)处理以及常见异常总结

Java异常(Exception)处理以及常见异常总结⽬录前⾔异常简介异常类型总结前⾔很多事件并⾮总是按照⼈们⾃⼰设计意愿顺利发展的,经常出现这样那样的异常情况。
例如:你计划周末郊游,计划从家⾥出发→到达⽬的→游泳→烧烤→回家。
但天有不测风云,当你准备烧烤时候突然天降⼤⾬,只能终⽌郊游提前回家。
“天降⼤⾬”是⼀种异常情况,你的计划应该考虑到这样的情况,并且应该有处理这种异常的预案。
计算机程序的编写也需要考虑处理这些异常情况。
异常(exception)是在运⾏程序时产⽣的⼀种异常情况,已经成为了衡量⼀门语⾔是否成熟的标准之⼀。
⽬前的主流编程语⾔java也提供了异常处理机制。
异常简介Java中的异常⼜称为例外,是⼀个在程序执⾏期间发⽣的事件,它中断正在执⾏程序的正常指令流。
为了能够及时有效地处理程序中的运⾏错误,必须使⽤异常类,这可以让程序具有极好的容错性且更加健壮。
在 Java 中⼀个异常的产⽣,主要有如下三种原因:1. Java 内部错误发⽣异常,Java 虚拟机产⽣的异常。
2. 编写的程序代码中的错误所产⽣的异常,例如空指针异常、数组越界异常等。
3. 通过 throw 语句⼿动⽣成的异常,⼀般⽤来告知该⽅法的调⽤者⼀些必要信息。
Java 通过⾯向对象的⽅法来处理异常。
在⼀个⽅法的运⾏过程中,如果发⽣了异常,则这个⽅法会产⽣代表该异常的⼀个对象,并把它交给运⾏时的系统,运⾏时系统寻找相应的代码来处理这⼀异常。
我们把⽣成异常对象,并把它提交给运⾏时系统的过程称为拋出(throw)异常。
运⾏时系统在⽅法的调⽤栈中查找,直到找到能够处理该类型异常的对象,这⼀个过程称为捕获(catch)异常。
例 1为了更好地理解什么是异常,下⾯来看⼀段⾮常简单的 Java 程序。
下⾯的⽰例代码实现了允许⽤户输⼊ 1~3 以内的整数,其他情况提⽰输⼊错误。
package io.renren.config;import java.util.Scanner;/*** Created by LiYangYong*/public class TestException {public static void main(String[] args) {System.out.println("请输⼊您的选择:(1~3 之间的整数)");Scanner input = new Scanner(System.in);int num = input.nextInt();switch (num) {case 1:System.out.println("one");break;case 2:System.out.println("two");break;case 3:System.out.println("three");break;default:System.out.println("error");break;}}}正常情况下,⽤户会按照系统的提⽰输⼊ 1~3 之间的数字。
事件处理4

基本概念
事件源(event source):产生事件的对象。如在 一个按钮上单击鼠标时,该按钮是事件源,会产 生一个ActionEvent类型的事件。
事件监听者(Listener):Java程序把事件进行处理 的方法放在一个类对象中,这个类对象就是事件 监听者。事件源通过调用相应的方法将某个对象 设置为自己的监听者,监听者有专门的方法来处 理事件。
常用方法:
public String getActionCommand()返回与此动作相关的命 令字符串。
public long getWhen()返回发生此事件时的时间戳。 public int getModifiers()返回发生此动作事件期间按下的组
合键。 public Object getSource() 最初发生 Event 的对象。
} public static void main(String[] args){ GUIDemo8 d=new GUIDemo8(); }
}
选项事件类 ItemEvent
当用户在窗口中的带有可选择功能的组件中进行 选取操作时所发生的事件.
选项事件ItemEvent的监听者是ItemListener. 该接口中提供的事件处理方法只有一个 itemStateChanged(ItemEvent e),当组件中 的选项状态改变时,将调用该方法.
public GUIDemo8() { jta=new JTextArea(); jp1=new JPanel(); String[] chatters={"红红","白白","蓝蓝"}; jcb=new JComboBox(chatters); jtf=new JTextField(10); jb=new JButton("发送"); jsp=new JScrollPane(jta);
java异常处理方法及流程

java异常处理方法及流程Java 异常处理方法及在 Java 编程中,异常处理是一项非常重要的技术。
通过适当的异常处理方法,可以使程序具备更好的稳定性和可读性,提高程序的健壮性。
本文将详细介绍 Java 异常处理的各个流程。
异常的基本概念异常是在程序执行期间产生的一种错误或异常情况。
Java 引入了异常处理机制来处理这些异常,以提高程序的可靠性和可维护性。
异常分为两种类型:1.受检异常(Checked Exceptions):受检异常在编译阶段必须进行处理,否则编译器将报错。
例如,IOException 是常见的受检异常。
2.非受检异常(Unchecked Exceptions):非受检异常是指不需要显式捕获或声明抛出的异常,编译器不会检查是否对其进行处理。
例如,NullPointerException 是常见的非受检异常。
异常处理的方法Java 提供了多种处理异常的方法,包括捕获异常和抛出异常。
下面分别进行介绍。
捕获异常是指通过使用try-catch语句块来捕获并处理异常。
try语句块用于包裹可能出现异常的代码,catch语句块用于捕获并处理异常。
try {// 可能抛出异常的代码块// ...} catch (ExceptionType1 e1) {// 处理异常类型1// ...} catch (ExceptionType2 e2) {// 处理异常类型2// ...} finally {// 可选的 finally 代码块,始终会被执行// ...}抛出异常当一个方法无法处理某个异常时,可以通过throw关键字手动抛出异常。
异常将会被传递给调用该方法的代码,并进一步处理。
public void someMethod() throws SomeException {if (someCondition) {throw new SomeException("Some error message");}使用异常的注意事项在使用异常处理时,需要注意以下几点:•捕获异常的顺序非常重要,应该从特定异常到一般异常的顺序进行捕获。
java的perform用法

一、介绍perform方法在Java编程语言中,perform方法是一种用于执行特定操作的重要方法。
perform方法可以用于执行诸如事件处理、动作执行等操作,它通常用于处理用户界面的各种事件。
二、perform方法的基本语法perform方法通常是作为接口的一部分,它的基本语法如下所示:```void perform()```在上述语法中,perform方法通常不会返回任何值,它主要用于执行特定的操作。
三、perform方法的常见用法perform方法在Java编程中有一些常见的用法,下面列举了其中的一些:1. 用于按钮点击事件处理perform方法经常用于处理用户界面中按钮的点击事件。
当用户点击按钮时,perform方法会被触发,从而执行相应的操作。
2. 用于菜单项点击事件处理perform方法也可以用于处理菜单项的点击事件。
当用户点击菜单项时,perform方法会被调用,执行相应的操作。
3. 用于动作执行perform方法还可以用于执行某些动作,比如在游戏开发中,perform方法可以用于执行玩家的移动、攻击等动作。
4. 用于事件处理perform方法还可以用于处理各种其他的事件,比如鼠标事件、键盘事件等。
四、perform方法的实际应用举例下面是一个简单的示例,展示了perform方法在Java编程中的实际应用:```javaimport java.awt.*;import java.awt.event.*;public class ButtonTest extends Frame {Button btn;public ButtonTest() {btn = new Button("Click me");btn.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {// 执行点击按钮的操作}});}}```在上面的示例中,我们创建了一个按钮,并注册了一个ActionListener,当用户点击按钮时,perform方法会被调用,执行相应的操作。
JavaSwing中处理各组件事件的一般步骤完整版

J a v a S w i n g中处理各组件事件的一般步骤集团标准化办公室:[VV986T-J682P28-JP266L8-68PNN]Java Swing中处理各组件事件的一般步骤是:1.新建一个组件(如JButton)。
2.将该组件添加到相应的面板(如JPanel)。
3.注册监听器以监听事件源产生的事件(如通过ActionListener来响应用户点击按钮)。
4.定义处理事件的方法(如在ActionListener中的actionPerformed中定义相应方法)。
以上步骤我们可以用多种方法实现。
但人们通常用二种方法。
第一种方法是只利用一个监听器以及多个if语句来决定是哪个组件产生的事件;第二种方法是使用多个内部类来响应不同组件产生的各种事件,其具体实现又分两种方式,一种是匿名内部类,一种是一般内部类。
为了说明如何使用上述三种方法实现事件的处理方法,我们建立一个简单的应用程序。
该程序界面有两个按钮,当用户点击相应的按钮,就会弹出一个对话框显示相应的内容。
通过这个简单程序,你可以实现自己更多、更复杂的用户界面程序。
首先,我们利用单个监听器来实现该程序。
我们定义一个名为Simple1的类来包括所有代码。
所有的用户行为(如点击按钮)由一个监听器SimpleListenner中的actionPerformed方法来处理。
以下是代码:import .*;import .*;public class Simple1{private static JFrame frame;dd(myPanel);();(true);}}让我们来看看以上代码是如何工作的。
在main方法中,我们定义了一个JFrame,然后将面板Jpanel添加到窗体中,该面板包括两个按钮。
相应的变量Frame,button1,button2定义在程序的开头部分。
在程序入口main方法中,首先新建Simple1组件,通过构造器建立用户GUI,定义一个面板Jpanle,,增加两个按钮,然后利用将两个按钮加入到一个活动监听器SimpleLister中,最后,两个按钮添加到面板。
第13章事件处理(第4版)

实现上述的接口,针对想要捕获的事件编写方法代码 。如要捕获单击按钮事件,就要为ActionListener接口 里的actionPerformed()方法编写代码。
为事件监听者创建一个对象,让自己的组件和方法完 成对它的注册,方法是在监听者接口的名字里加入一 个前缀“add”,如addActionListener()
待用户通过鼠标、键盘给它通知(消息驱动), 它再根据这个通知的内容进行相应的处理(事件 驱动)。 通常一个键盘或鼠标操作会引发一个系统预先定 义好的事件,用户只需编写代码,定义每个特定 事件发生时程序应做出何种响应即可。
3
13.1 委托事件处理
事件(event):用户使用鼠标或键盘对窗口中的组 件进行交互时所发生的事情。对这些事件做出响 应的程序,称为事件处理程序(Event Handler)。
见教材例13.5
20
13.6 文本组件及相应的事件处理
文本组件所触发的事件主要有动作事件 ActionEvent和文本变化事件CaretEvent 。 见教材例13.6
21
13.7 窗口组件及窗口事件处理
Window类的任何子类都可能触发下列的窗口事 件:打开窗口、正在关闭窗口、关闭窗口、激活窗 口、变成非活动窗口、最小化窗口和还原窗口。 Window类常用方法见教材表13.8
5
13.1 委托事件处理
Java语言规定:为了让监听者能对事件源发生的 事件进行处理,创建该监听者对象的类必须声明 实现相应的监听者接口或继承相应的适配类,即 必须在类体中具体定义该接口中所有方法的方法 体或覆盖适配器类中的相应方法,以供监听者自 动调用相应事件处理方法来完成对应事件的任务 ,这些处理事件的方法就是事件处理程序。
JCheckBoxMenuItem类的构造方法及常用方法 见教材表13.30、13.31。
使用Java Swing组件进行事件处理方法的分析与比较

使用Java Swing组件进行事件处理方法的分析与比较摘要:Swing组件是Java基本类库的一部分,是用于开发Java应用程序用户界面的开发工具包。
通过具体实例分析了多种使用Swing 组件进行事件处理的方法,并对这些方法进行了比较。
关键词:Java;Swing;监听;内部类;事件0引言Swing组件是Java语言中用来编写图形化界面的工具包,它使用灵活、功能强大,使得开发人员利用其提供的各种类与方法能够快速地创建出符合用户需求的各种美观、实用的图形界面。
Swing组件具有自动对各种用户的动作产生响应的功能,例如当某一用户点击button按钮或选择菜单栏时,该动作将会被监听处理。
在代码编写的过程中注册监听器是必须完成的工作,通过它对事件源进行监听,这样在程序中就可以十分方便地对用户行为进行响应处理。
1使用Swing组件进行事件处理过程使用Java Swing组件进行事件处理的过程分为如下几个步骤:首先,创建一个新的Swing组件(例如按钮或者菜单栏等);其次,将刚刚创建的组件添加到定义的面板中去;然后,通过注册监听器对事件源进行监听(例如对用户点击按钮或者点击鼠标的动作);最后,在程序中编写响应事件源产生事件的各种方法。
上述几个步骤的实现可以通过多种方法来完成。
第一种可使用的方法是通过注册单个监听器并使用多个if条件判断语句来决定响应的事件源;第二种方法使用Java语言中的匿名内部类来进行相关的事件处理过程;第三种方法是通过一般内部类来进行事件的响应。
第二种、第三种方法从本质上来说,都是在进行事件处理的过程中使用了多个Java的内部类,而不同之处在于具体实现有较大变化。
下面通过一个简单的Java 应用程序(创建两个按钮,当用户点击按钮后产生不同的显示结果)展示怎样通过以上3种方法来实现Swing组件的事件处理过程。
1.1单个监听器方式该方法使用单个监听器来进行实现。
具体完成该方法的过程为:建立一个名为Example的类,当用户点击button按钮后,监听器ExampleListenner会对该动作进行监听并交由actionPerformed()方法来进行相应的事件处理。
谈Java技术中的事件处理与应用

[1] 《Java 程序设计实践教程》刘万军 宋强 清华大学出 版社 2006 年 9 月
[2] 《Java 编程技术》孙一林 彭波 机械工业出版社 2008 年 6月
(收稿日期:20 11. 05 .05 )
·64·
事件源
触发的事件类的类型Button NhomakorabeaActionEvent
CheckBox
ActionEve nt、ItemEvent
—— —— —— —— —— —— —— 作者简介:邢素萍(1957-),女,江苏南京人,南京工业职业技术学院教授,研究方向:Java 技术,南京,210046
王 健南 (1957- ),男 ,江 苏南 京人 ,南 京工 业职 业技 术学 院教 授, 研究 方向 :数 据库 技术 ,教 育技 术, 南京 ,210046
Microcomputer Applications Vol. 27, No.12, 2011
技术交流
微型电脑应用
2011 年第 27 卷第 12 期
文章编号:100 7-757X(2011)12-0063-02
谈 Java 技 术 中 的 事 件 处 理 与 应 用
邢素萍,王健南
摘 要:简述了 JAVA 语言面向对象程序设计中事件处理的基本方法,并通过一个包含命令按钮的实例说明了编程基本原则。
Java 把事件类分为语义事件和底层事件,语义事件直接 继承自 AWTEvent 类。如: ActionEvent、Adjustm enEvent
图2
在 AWT 组件中,有的只是触发一个事件处理类,而有 的可能触发几个事件处理类,给出常用组件与可能触发事件 的关系,如表 1 所示:
表 1 事件源与触发的事件类类型的关系
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 总结:
– 尽管awt的用户界面组件仍然可以用,但是建议最好不要使用。 – 现在编写Java图形界面程序,使用swing组件 + awt事件处理模型。
事件处理概述
• 图形用户界面编程中,必须使用事件处理。
– 支持GUI的操作环境会不断监视事件,并把事件报告给正在运行 的程序。这是多任务的需要。 – 每个程序决定如何相应这些事件。
由实现接口改为 继承自适配器类, 从而不用再写另 外六个无用方法。 也可写成 匿名内部类
WindowListener WindowAdapter
MyWindowAdapter
Java事件概述
• Java中所有事件都从java.util.EventObject类继承而来。 • 两个包中定义了事件:
– java.awt.event:awt的事件、监听器及适配器定义。 – java.swing.event:专门用于swing组件的附加事件。
事件监听器编写
见Example1.java import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Example1 extends JFrame { public Example1() { setSize(320,200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container contentPane = getContentPane(); JButton testButton = new JButton("Test"); testButton.addActionListener(new MyListener1()); contentPane.setLayout(new BorderLayout()); contentPane.add(testButton,BorderLayout.SOUTH); } } class MyListener1 implements ActionListener { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "ActionCommand:"+e.getActionCommand()); } }
Java程序设计语言 --------事件处理
计算机科学与技术学院
GUI组件概述
• awt:Abstract Window Toolkit——抽象窗口工具集
– 从Java1.0中出现。 – awt处理用户界面元素的方法是把这些元素的创建和行为委托给 每个目标平台(如windows,Linux)上的本地GUI处理。
添加窗口事件监听器 窗口事件监听器实现 WindowListener接口 要处理的窗口事件
适配器类
• 问题:仅仅需要处理关闭窗口事件,但却要写另外六个空方法。 • 解决方法:使用适配器类。
– 适配器类是一个实现了某个接口,但其中所有方法都为空的类。 – 每个具有不止一个方法的监听器接口都对应有一个适配器类。 – 编写监听器类时只需从适配器类派生一个子类即可。
– SwingUtilities.updateComponentTreeUI(panel)刷新要改变的组件
• 参数panel给出面板中的一个组件即可刷新整个面板。
见Example4.java tButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent aEvent) { try{ UIManager.setLookAndFeel(aPlafName); SwingUtilities.updateComponentTreeUI(Example4.this); }catch(Exception e){ e.printStackTrace(); }; } });
• Java的事件处理采用的是事件监听器方式。
– 事件监听器是一个实现了监听器接口的对象。 – 事件源(如按钮组件)是一个能够注册监听器并为它们发送事件的 对象。 – 每个事件源拥有自己的事件监听器,可以有多个。 – 当事件源产生了一个事件后,事件源就会给所有监听器对象发送 通知,即调用事件监听器对象的相应方法。 – 事件的信息被封装在一个对象中,不同事件源能够产生不同种类 的事件。 – 编程人员要做的就是编写事件监听器类,创建一个事件监听器对 象,并注册到相应的事件源。
myListener2
事件监听器类的各种写法
• 监听器类的声明:
– – – – 将事件监听器作为单独的类。 将事件监听器作为组件的内部类。 直接使用已有类(通常是包含事件源的组件)作为事件监听器。 使用匿名内部类。
public class Example1 extends JFrame implements ActionListener { public void actionPerformed(ActionEvent e){…} }
• 编写事件处理程 序的步骤如下:
– 编写监听器类; – 在监听器类中实 现接口中需要的 方法; – 方法中可以使用 ActionEvent对象 判断事件; – 创建一个事件监 听器对象; – 将该对象添加到 事件源。
事件源与监听器的关系
• 一个事件源可以对应多个监听器。 • 一个监听器可以对应多个事件源。
• 监听器类的实现:
– 一个监听器类实现多个组件的监听器对象。
• 通过类中的实例字段来区分不同的监听器对象。
– 一个监听器对象作为多个组件的监听器。
• 在事件的响应方法中通过事件源区分不同的事件。
见Example3.java redButton.addActionListener(new ActionListener() //匿名内部类监听器 { public void actionPerformed(ActionEvent e) { …… } });
窗口事件
• ActionListener接口非常简单,用于按钮事件处理。 • 相应的,WindowListener接口用于窗口事件处理。
见Example5.java public class Example5 extends JFrame { public Example5() { … setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); addWindowListener(new MyWindowListener()); } private class MyWindowListener implements WindowListener { public void windowOpened(WindowEvent e){} public void windowClosing(WindowEvent e) { int result = JOptionPane.showConfirmDialog(……); if(result == JOptionPane.OK_OPTION)System.exit(0); } public void windowClosed(WindowEvent e){} public void windowIconified(WindowEvent e){} public void windowDeiconified(WindowEvent e){} public void windowActivated(WindowEvent e){} public void windowDeactivated(WindowEvent e){} } }
见Example2.java class MyListener1 implements ActionListener { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "ActionCommand:"+e.getActionCommand()); } } myListener1 class MyListener2 implements ActionListener { public void actionPerformed(ActionEvent e) { String actionCommand = e.getActionCommand(); Color bkColor = null; if(actionCommand.equals("Red"))bkColor = new Color(255,0,0); else if(actionCommand.equals("Green"))bkColor = new Color(0,255,0); else if(actionCommand.equals("Blue"))bkColor = Color.blue; getContentPane().setBackground(bkColor); } }
• 如何查找组件能够发出哪些事件:
– 查找组件能够添加哪些事件监听器(add***Listener) – 根据方法参数查找相应的接口,即可知道具体的事件含义
• java.awtቤተ መጻሕፍቲ ባይዱevent包中定义了11个监听器接口、7个适配器类
java.awt.event包中的 个监听器接口 包中的11个监听器接口 包中的 ActionListener WindowListener AdjustmentListener ComponentListener ContainerListener FocusListener ItemListener KeyListener MouseListener MouseMotionListener TextListener java.awt.event包中的 个适配器类 包中的7个适配器类 包中的 WindowAdapter ComponenAdapter ContainerAdapter FocusAdapter KeyAdapter MouseAdapter MouseMotionAdapter