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) {

        }
    }
}

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Byte_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值