键盘事件——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的主要内容,如果未能解决你的问题,请参考以下文章
Android 事件分发事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup )(代码片段