Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

Java入门(12) 事件与错误处理

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  本章目标:

  通过本章的学习,读者应能够了解Java语言中复杂的事件处理与错误处理。理解它们的概念,知道它们的工作流程,为今后学习打下基础。

  12.1事件处理

  传授新知

  消息驱动、事件处理是面向对象编程技术的主要特点,它一改过程语言的顺序执行,整个程序以程序代码为主线地思想,而是变成了由用户,使用程序的用户为主线的思想。

  通俗地说,以前的程序设计思想中,整个程序的运行流程是以程序本身为主的,整个运行流程是在程序中预定义的。而在面向对象的程序设计思想中,则是让用户来掌握主动权,整个运行流程是由用户来决定的。应用程序一旦构建完GUI后,它就不再工作,而是等待,等待用户通过鼠标、键盘给它通知(消息驱动),它再根据这个通知的内容进行相应的处理(事件处理)。

  我们来回顾一下,在我们讲解使用“按钮”时,曾经在程序中使用过这样的一段程序:


button1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
Toolkit.getDefaultToolkit().beep();
}
});

  当时,我们已经对它的功能做了描述:首先为按钮buuton1增加了一个事件监测器,这个事件监测器用来监测按钮是否按下(ActionEvent)。另外,我们还编写了一个事件处理的程序段:


public void actionPerformed(ActionEvent evt)
{
Toolkit.getDefaultToolkit().beep();
}

  当按钮按下时,就会执行这个程序段,也就执行了Toolkit.getDefault.Toolkit().beep()方法,即响了一声铃。

  在程序中要编写“事件处理”程序段时,通常可以分为以下几个步骤来做:

  1.确定事件类型

  几乎用户使用鼠标、键盘做的每一个动作都会引起一个消息,也就是会引发一个事件,但我们并不是要对这些所有的事件都做出反应,有些事件并不是我们所关心的。对于不同的部件,我们需要关心的事件往往不同。下表中列出了最常用到的几个事件。

  部件 事件类型 事件描述

  JButton ActionEvent 按下了按钮

  CheckBox ActionEvent 选择或取消选择复选框

  JTextField ActionEvent 用户输入文本输入回车键

  表12-1 常用部件-事件一览表

  2.为部件增加一个该事件的监测器

  每一种事件类型都有一个相应的接口,通常名为XXXListener,其中XXX代表它所处理的事件类型。这些接口包含在java.awt.event和javax.swing.event包中。例如:


button1.addActionListener(new ActionListener()
{
……
});

  3.增加事件处理程序

  最后,我们就要往里面增加血肉,实际的事件处理程序。

  正如你所看到的一样,编写事件处理程序并不是一件简单的事,要写好事件处理程序更不是那么简单。由于本书是一本Java的入门性书籍,所以并没有把每个部件的全部事件都列举出来,做一个一一讲解。在此,只求大家能够通过学习对事件处理过程有一个粗略地了解,以便大家能够学习、研究各种与事件处理相关的知识。

  实例说明

  我们曾经在第10章中使用过Frame来构建小应用程序,当时我们可以看到程序执行时是新弹出了一个窗口,也就是一个Frame,这个Frame有最大化、最小化、关闭按钮。不知各位读者是否注意到,在这个Frame中呢,关闭按钮并没有生效,这是因为在程序中并未定义对这个事件的处理。下面我们来看一段程序,看一下它是如何使这个关闭按钮生效的。根据惯例,我们首先创建一个源程序:

  源程序:closeTest.java


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class closeTest 
{
public static void main(String args[])
{
Frame frame1=new Frame("This is a Frame");
frame1.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
frame1.setSize(200,200);
frame1.show();
}
}

  这是一个Java的应用程序,我们首先使用javac编译,然后执行:


java closeTest

  来执行这个程序,程序的输出极为简单:

12-1

  图12-1 程序closeTest.java的输出

  一些提示:

  这个程序也从侧面说明了,我们在Java的应用程序中也可以使用GUI界面,虽然我们一直使用Java小应用程序(Applet)来举例。

  程序的输出是一个空白的Frame,大家现在按下关闭按钮,你会发现,这个Frame马上被关闭了。我们实现了我们的目标。

  传授新知

  下面,我们一起来看一下这个程序:

  1)


public static void main(String args[])

  大家应该还记得,一个Java应用程序(Application)是从main方法开始执行的吧!

  2)


Frame frame1=new Frame("This is a Frame");


 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:GDK Reference Manual   下一篇:Java入门(4) 第一个Java程序

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章