java笔记之事件处理机制

韩顺平老师的零基础学java总结


一、事件处理入门,让小球动起来

public class BallMove extends JFrame {
    MyPanel mp = null;

    public BallMove() {
        mp = new MyPanel();
        this.add(mp);
        this.setSize(400, 300);
        //JPanel设置监听器后还需让JFrame知道
        this.addKeyListener(mp);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);

    }

    public static void main(String[] args) {
        new BallMove();
    }
}

class MyPanel extends JPanel implements KeyListener {
    int x = 10;
    int y = 10;

    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.fillOval(x, y, 20, 20);//默认黑色
    }

    //有字符输出时,该方法被触发
    @Override
    public void keyTyped(KeyEvent e) {

    }

    //某个键按下时触发
    @Override
    public void keyPressed(KeyEvent e) {
//        System.out.println((char)e.getKeyCode()+"被按下...");
        //当按下的键为向下按钮时:
        if (e.getKeyCode() == KeyEvent.VK_DOWN) {
            y=y+3;
        } else if (e.getKeyCode() == KeyEvent.VK_UP) {
            y--;
        } else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
            x--;
        } else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
            x++;
        }
        //让面板重绘。
        this.repaint();
    }

    //某个键松开时触发
    @Override
    public void keyReleased(KeyEvent e) {

    }
}

因为小球是在JPanel上画出来的,所以让MyPanel类继承KeyListener.并且实现里面的三个方法。
三个方法分别是:
keyTyped:有字符输出时触发。
keyPressed:键按下时触发。
keyReleased:键松开时触发。
在JPanel添加监听器后,还需让JFrame窗口知道。

二、java事件处理机制

1.基本说明

java事件处理采取“委派事件模型”,当事件发生时,产生事件的对象(事件源)会把此“信息”传递给事件监听者处理。
这里的信息:java.awt.event事件类库的某个类创建的对象,把它称为“事件的对象”。
在这里插入图片描述
事件源:即产生事件的东西,如(鼠标,键盘,按钮等。)
事件源产生一个事件后,就会把相关的信息封装成一个对象,就是一个事件对象。
然后将这个事件传递给监听者,交给监听者去处理。

2.机制分析

在这里插入图片描述
让一个对象成为事件监听者,需要去实现相应的监听器才行。

3.事件处理机制的深入理解

事件源、事件、事件监听器。
(1)事件源:一个产生事件的对象。如按钮,鼠标,键盘。
(2)事件:承载事件源事件改变时的对象,如鼠标按下左键,键盘按下某个按钮,松开等。
键盘事件、鼠标事件、窗口事件等。
事件对象保存着当前事件的很多信息,如keyEvent对象含有被按下键的code值。
java.awt.event和javax.swing.event包中定义了各种事件类型。
(3)事件类型:
在这里插入图片描述

(4)事件监听器接口
1.一个类实现了事件监听器的接口,就可以作为一个事件监听者,对接受到的事件进行处理。
2.事件监听器接口有多种,不同的监听器接口可以监听不同的事件。且一个类可以同时实现多个监听接口。
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值