java笔记之事件处理机制

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

目录

  • 一、事件处理入门,让小球动起来
  • 二、java事件处理机制
    • 1.基本说明
    • 2.机制分析
    • 3.事件处理机制的深入理解


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

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事件类库的某个类创建的对象,把它称为“事件的对象”。
java笔记之事件处理机制_第1张图片
事件源:即产生事件的东西,如(鼠标,键盘,按钮等。)
事件源产生一个事件后,就会把相关的信息封装成一个对象,就是一个事件对象。
然后将这个事件传递给监听者,交给监听者去处理。

2.机制分析

java笔记之事件处理机制_第2张图片
让一个对象成为事件监听者,需要去实现相应的监听器才行。

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

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

(4)事件监听器接口
1.一个类实现了事件监听器的接口,就可以作为一个事件监听者,对接受到的事件进行处理。
2.事件监听器接口有多种,不同的监听器接口可以监听不同的事件。且一个类可以同时实现多个监听接口。
java笔记之事件处理机制_第4张图片

你可能感兴趣的:(java笔记,java,笔记,开发语言)