键盘事件——TankGame3

Posted ybzmy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了键盘事件——TankGame3相关的知识,希望对你有一定的参考价值。


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

/**
 * 事件处理加深理解:
 *     实现:
 *         频幕中绘制一个小球
 *         可以用键盘控制其上下左右移动
 * @author ybz
 *Last_update2018年9月22日上午9:02:56
 */
public class ActionDemo2 extends JFrame {
    MyPanel2 mp=null;
    public ActionDemo2() {
        mp=new MyPanel2();    
        
        
        this.addKeyListener(mp);    //事件源是整个页面,监听类型是键盘事件,监听者是mp,MyPanel2类的实例
        this.add(mp);
        this.setSize(600,500);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
    
    public static void main(String[] args) {
        ActionDemo2 ad2=new ActionDemo2();
    }

}

//定义自己的面板
class MyPanel2 extends JPanel implements KeyListener{
    int x=10;
    int y=10;
    public void paint(Graphics g) {
        super.paint(g);
        g.fillOval(x, y, 20, 20);
        
    }

            //可用来获取键盘按下的值
    public void keyTyped(KeyEvent e) {
//        System.out.println(e.getKeyChar()); //将按下的键名打印出来

        
    }

            //键盘被按下时触发
    public void keyPressed(KeyEvent e) {
//        System.out.println("键盘被按下");
        if(e.getKeyCode() == KeyEvent.VK_S) {
            y=y+2;
            y=y > 500? 0:y;
        }else if(e.getKeyCode() == KeyEvent.VK_W) {
            y-=2;
            y=y < 00? 500:y;
        }
        else if(e.getKeyCode() == KeyEvent.VK_A) {
            x-=2;
            x = x < 0? 600:x;
        }
        else if(e.getKeyCode() == KeyEvent.VK_D) {
            x+=2;
            if(x > 600) x = 0;
        }
        this.repaint();

    }

            //键盘被释放
    public void keyReleased(KeyEvent e) {
        
    }
}

 

 

  技术分享图片

 

 

一个类实现监听的步骤:

  1.实现相应的接口(ActionListener, KeyListener, MouseListener ,WindowListener 、、、)

  2.把接口的时间按处理方法按照你的需求重写(Override)

  3.在事件源注册监听

  4.事件传递要依靠事件对象

以上是关于键盘事件——TankGame3的主要内容,如果未能解决你的问题,请参考以下文章

从片段导航到另一个片段时隐藏键盘

软输入键盘隐藏编辑文本

pyHook无法监听键盘事件?

键盘事件

在片段替换上显示/隐藏 Android 软键盘

Android 事件分发事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup )(代码片段