您所在的位置:主页 > JAVA技术 >

Java中的事件处理

时间:2014-03-04 11:03来源:未知 作者:疯狂java 点击:

  

  图形用户界面提供人机交互的页面,但业务功能实现是通过事件驱动来完成的。在图形用户界面中,程序的运行是由于某个事件的发生,使事件源监听到该事件并进行处理。如使用鼠标(事件)单击一个按钮(事件源),按钮监听到事件后进行下一步的处理。事件处理中有三个主要的概念:事件、事件源和事件处理。事件源是产生事件的对象;事件处理负责处理事件;事件是在事件源和事件监听器间传递信息的桥梁。他们之间的关系是:当事件源产生事件时,通过调用监听器相应的办法进行事件处理。

  对事件的处理是通过事件监听器实现的。首先需要在事件源中登记事件监听器。当有事件发生时,java虚拟机就生成一个事件对象,事件对象记录并处理该事件所需的各种信息。当事件源收到事件对象时,就会启动在该事件源中注册的事件监听器,并将相应事件对象传送到对应的事件监听器中进行事件的处理。每类时间都有相应的事件监听器,监听器是接口,根据动作来定义方法。监听器对象必须实现相应的监听器接口。下面是事件处理的简单应用:

  /*

  * 监听器

  */

  package com.listener;

  import java.awt.Dimension;

  import java.awt.event.ActionEvent;
 

  import java.awt.event.ActionListener;

  import java.awt.event.MouseEvent;

  import java.awt.event.MouseListener;

  import javax.swing.JButton;

  import javax.swing.JFrame;

  class ButtonActionListener implements ActionListener{

  @Override

  public void actionPerformed(ActionEvent e) {

  System.out.println("按钮被单击");
 

  }

  }

  class ButtonMouseListener implements MouseListener{

  @Override

  public void mouseClicked(MouseEvent e) {

  }

  @Override
 

  public void mousePressed(MouseEvent e) {

  }

  @Override

  public void mouseReleased(MouseEvent e) {

  }

  @Override

  public void mouseEntered(MouseEvent e) {

  System.out.println("鼠标进去了");

  }

  @Override

  public void mouseExited(MouseEvent e) {

  System.out.println("鼠标出去了");

  }

  }

  public class EventListenerDemo {

  public static void main(String[] args) {

  JFrame frame = new JFrame("事件监听器");
 

  frame.setPreferredSize(new Dimension(400,300));

  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  frame.setLocationRelativeTo(null);

  JButton button = new JButton("单击我");

  ButtonActionListener listener = new ButtonActionListener();

  button.addActionListener(listener);

  button.addMouseListener(new ButtonMouseListener());

  frame.add(button);

  frame.pack();

  frame.setVisible(true);

  }

  }