[Java桌面应用开发]事件处理————(2020.4.20学习笔记)

目录

第一节 事件处理
第二节 实例演示

01 事件处理

事件处理模型
  在Java程序运行时,如果用户进行某个操作,比如单击鼠标键或者输入字符,程序应当做出适当响应。用户在程序界面所进行的操作称为用户事件。对事件的响应称为事件处理。
  Java中定义了很多事件类,用于描述不同的用户行为,例如,代表鼠标事件的MouseEvent类和代表键盘事件的KeyEvent类等。每当用户在组件上进行某种操作时,事件处理系统便会生成一个事件类对象。例如,用鼠标单击按钮,事件处理系统便会生成一个代表此事件的ActionEvent事件类对象。操作不同,事件类对象也会不同。
  Java中,为了便于管理,系统将事件分类,称为事件类型。系统为每个事件类型提供一个侦听程序接口,它规定了接收并处理该类事件的方法的规范。为了接收并处理某类用户事件,组件必须注册相应的事件处理程序,这种事件处理程序称为事件侦听程序(Listener,也称为侦听器),它是实现了对应侦听程序接口的一个类。要作为侦听程序对象的类必须实现相应的接口,并实现接口中规定的响应事件的方法。例如,为了处理按钮上的ActionEvent事件,需要定义一个实现ActionListener接口的侦听程序类。对应ActionEvent事件,有ActionListener接口。
  public interface ActionListenr extends EventListener{
  public void actionPerformed(ActionEvent e);}
  该接口中只定义了一个方法,即actionPerformed( ),当出现ActionEvent事件时,就会调用该方法。每个组件都有若干个形如addXXXListener(XXXListener)的方法,通过这类方法,可以为组件注册事件侦听程序。例如在JButton类中有如下的方法:
  public void addActionListener(ActionListener l)
  该方法可为JButton组件注册ActionEvent事件侦听程序,方法的参数是实现了ActionListener接口的类的一个实例。也可以删除添加的事件侦听程序,例如:
  public void remove ActionListener(ActionListener l)
  将移除指定的操作侦听器,以便它不再接收来自此按钮的操作事件。
  这种处理事件机制称为委托事件处理模型。概括来说,事件被直接送往产生这个事件的组件,组件需要注册一个或多个侦听程序。侦听程序的类中包含了事件处理程序,用来接收和处理这个事件。事件是一个对象,它只向注册的侦听程序报告。事件处理的步骤如下:
  ①程序中引入java.awt.event包。
  import java.awt.event;
  ②给所需的事件源对象注册事件侦听程序。事件源对象.addXXXListener(XXXListener);
  ③实现相应的方法。若某个侦听程序接口包含多个方法,则需要实现所有的方法。

02 实例演示

实例代码如下
ButtonHandler.java中的代码

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ButtonHandler implements ActionListener {

	@Override
	public void actionPerformed(ActionEvent arg0) {
		System.out.print("Action occurred");
		
	}

}

Subject.java中的代码

import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class Subject {
   public static void main(String args[])
   {
	   JFrame frame=new JFrame("ActionEvent Demo ");
	   JButton b=new JButton("Press Me");
	   b.addActionListener(new ButtonHandler());
	   frame.getContentPane().add(b,BorderLayout.CENTER);
	   frame.pack();
	   frame.setVisible(true);
	   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	   
   }
}

最后实现的效果如下
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值