韩顺平 java 第36讲 事件监听

事件源

事件源是一个产生或者触发事件的对象,比如前面的按钮或者按键,当这个事件源对象的某些状态以某种方式发生变化时,就会产生某种类型的事件,一个事件源可能会产生多个不同类型的事件,如果某个组件(对象)希望得到事件源的事件,就需要在这个事件源上注册。


事件

事件就是承载事件源状态改变时的信息对象。或者说事件是事件源向事件监听器传输事件源状态信息的载体,在用户与GUI组件进行交互时就会生成事件,比如当鼠标在面板中移动时,就会生成一个鼠标移动事件的对象,而这个对象保存这当前鼠标在面板中的位置信息。

事件监听器接口

事件监听者实际上就是一个类,该类实现了某个时间监听器接口,比如之前的MyPanel就是一个类,她实现了ActionListener接口,她就可以作为一个事件监听者,对接受到的事件进行处理,时间监听器接口有多种,不同的事件监听器可以监听不同的事件,一个类可以实现一个事件监听接口,也可以实现多个监听接口。

package chen.com;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;

//这个类NotePad就是监听者
public class Notepad extends JFrame{
    MyPanel mp = null;

    public static void main(String[] args) {
        Notepad myclass = new Notepad();
    }
    public Notepad(){
        mp = new MyPanel();
        this.add(mp);
        //注册监听
        this.addMouseListener(mp);
        this.addKeyListener(mp);

        this.setSize(300,200);
        this.setLocation(200,100);
        this.setTitle("change the background");
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

class MyPanel extends JPanel implements MouseListener,KeyListener{
    int x = 10,y = 100;
    @Override
    public void paint(Graphics g) {
        super.paint(g);
    }
    @Override
    public void mouseClicked(MouseEvent e) {
        System.out.println("x = " + e.getX() + "  y = " + e.getY());
    }
    @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("鼠标走了");
    }
    @Override
    public void keyTyped(KeyEvent e) {

    }
    @Override
    public void keyPressed(KeyEvent e) {
        System.out.println("按了:" + e.getKeyChar());
    }
    @Override
    public void keyReleased(KeyEvent e) {

    }
}

总结

  1. java采用委托机制处理事件
  2. java中的事件是分类的,比:对窗体事件、鼠标事件、按键事件
  3. java中一个雷要监听某个事件,则必须实现相应的事件监听接口
  4. 事件监听接口有很多种,程序员应担针对不同的情况实现不同的监听接口
  5. 在事件源中需要注册事件监听类,否则事件监听类接收不到事件源发生的事件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值