Java入门(12) 事件与错误处理本章目标: 通过本章的学习,读者应能够了解Java语言中复杂的事件处理与错误处理。理解它们的概念,知道它们的工作流程,为今后学习打下基础。 12.1事件处理 传授新知 消息驱动、事件处理是面向对象编程技术的主要特点,它一改过程语言的顺序执行,整个程序以程序代码为主线地思想,而是变成了由用户,使用程序的用户为主线的思想。 通俗地说,以前的程序设计思想中,整个程序的运行流程是以程序本身为主的,整个运行流程是在程序中预定义的。而在面向对象的程序设计思想中,则是让用户来掌握主动权,整个运行流程是由用户来决定的。应用程序一旦构建完GUI后,它就不再工作,而是等待,等待用户通过鼠标、键盘给它通知(消息驱动),它再根据这个通知的内容进行相应的处理(事件处理)。 我们来回顾一下,在我们讲解使用“按钮”时,曾经在程序中使用过这样的一段程序:
当时,我们已经对它的功能做了描述:首先为按钮buuton1增加了一个事件监测器,这个事件监测器用来监测按钮是否按下(ActionEvent)。另外,我们还编写了一个事件处理的程序段:
当按钮按下时,就会执行这个程序段,也就执行了Toolkit.getDefault.Toolkit().beep()方法,即响了一声铃。 在程序中要编写“事件处理”程序段时,通常可以分为以下几个步骤来做: 1.确定事件类型 几乎用户使用鼠标、键盘做的每一个动作都会引起一个消息,也就是会引发一个事件,但我们并不是要对这些所有的事件都做出反应,有些事件并不是我们所关心的。对于不同的部件,我们需要关心的事件往往不同。下表中列出了最常用到的几个事件。 部件 事件类型 事件描述 JButton ActionEvent 按下了按钮 CheckBox ActionEvent 选择或取消选择复选框 JTextField ActionEvent 用户输入文本输入回车键 表12-1 常用部件-事件一览表 2.为部件增加一个该事件的监测器 每一种事件类型都有一个相应的接口,通常名为XXXListener,其中XXX代表它所处理的事件类型。这些接口包含在java.awt.event和javax.swing.event包中。例如:
3.增加事件处理程序 最后,我们就要往里面增加血肉,实际的事件处理程序。 正如你所看到的一样,编写事件处理程序并不是一件简单的事,要写好事件处理程序更不是那么简单。由于本书是一本Java的入门性书籍,所以并没有把每个部件的全部事件都列举出来,做一个一一讲解。在此,只求大家能够通过学习对事件处理过程有一个粗略地了解,以便大家能够学习、研究各种与事件处理相关的知识。 实例说明 我们曾经在第10章中使用过Frame来构建小应用程序,当时我们可以看到程序执行时是新弹出了一个窗口,也就是一个Frame,这个Frame有最大化、最小化、关闭按钮。不知各位读者是否注意到,在这个Frame中呢,关闭按钮并没有生效,这是因为在程序中并未定义对这个事件的处理。下面我们来看一段程序,看一下它是如何使这个关闭按钮生效的。根据惯例,我们首先创建一个源程序: 源程序:closeTest.java
这是一个Java的应用程序,我们首先使用javac编译,然后执行:
来执行这个程序,程序的输出极为简单:
图12-1 程序closeTest.java的输出 一些提示: 这个程序也从侧面说明了,我们在Java的应用程序中也可以使用GUI界面,虽然我们一直使用Java小应用程序(Applet)来举例。 程序的输出是一个空白的Frame,大家现在按下关闭按钮,你会发现,这个Frame马上被关闭了。我们实现了我们的目标。 传授新知 下面,我们一起来看一下这个程序: 1)
大家应该还记得,一个Java应用程序(Application)是从main方法开始执行的吧! 2)
|