java事件处理机制---键盘事件

此案例实现了画框内圆形在按下 上下左右 时圆形的移动

事件源:产生事件的对象,如:键盘、鼠标等
事件:在事件源上产生了某种变化。如:键盘被按下等
键盘事件监听需要实现 implements KeyListener接口对应的方法- - -在对应方法中实现自己的要求

package 坦克大战.事件处理机制;


import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;


/**
 * @Auther:
 * @Date: 2022/4/17 - 04 - 17 - 21:03
 * @Description: 坦克大战.事件处理机制
 * @version: 1.0
 */
public class BallMove extends JFrame{
    ball_panel ball_panel = null;

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

    //构造器
    public BallMove(){
        ball_panel = new ball_panel();
        this.add(ball_panel);
        this.setSize(400,300);
        this.addKeyListener(ball_panel);    //在画板上监听键盘事件
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
//  keylistener 键盘监听机制
    class ball_panel 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 event) {

        }
        //当某个按键按下,该方法会被触发
        @Override
        public void keyPressed(KeyEvent event) {
            //根据不同的按键输入控制小球移动
            if(event.getKeyCode() == KeyEvent.VK_DOWN) {     //检测向下键是否被按下
                y++;
            }
            else if(event.getKeyCode() == KeyEvent.VK_UP){		//向上
                y--;
            }
            else if(event.getKeyCode() == KeyEvent.VK_RIGHT){	//向右
                x++;
            }
            else if(event.getKeyCode() == KeyEvent.VK_LEFT){	//向左
                x--;
            }
            this.repaint();
        }
        //某个按键松开,该方法会被触发
        @Override
        public void keyReleased(KeyEvent event) {

        }
    }
}

出处:韩顺平老师
声明:此文章为学习笔记,如有侵权请联系删除。

你可能感兴趣的:(Java,java)