package plane;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import util.GameUtil;

import util.MyFrame;

//定义图片出现的初始位置

public class PlaneGameFrame extends MyFrame{

Image bg = GameUtil.getImage("backgroundIMG/bg.png");

Plane p = new Plane("backgroundIMG/3.png",20,20);

public void paint(Graphics g) {

g.drawImage(bg,0,0,null);

p.draw(g);

}

public static void main(String[] args) {

new PlaneGameFrame().launchFrame();

}

public void launchFrame() {

super.launchFrame();

//增加键盘监听

addKeyListener(new KeyMonitor());

}

// 定义为内部类,可方便使用外部的普通属性

class KeyMonitor extends KeyAdapter{

public void keyPressed(KeyEvent e) {

System.out.println("按下:"+e.getKeyCode());

switch(e.getKeyCode()) {

case 37:

p.left = true;

break;

case 39:

p.right = true;

break;

case 38:

p.up = true;

break;

case 40:

p.down = true;

break;

default:

break;

}

}

}

public void keyReleased(KeyEvent e) {

System.out.println("释放:"+e.getKeyCode());

switch(e.getKeyCode()) {

case 37:

p.left = true;

break;

case 39:

p.right = true;

break;

case 38:

p.up = true;

break;

case 40:

p.down = true;

break;

default:

break;

}

}

}

这是窗口加载的代码

package plane;

import java.awt.Graphics;

import java.awt.Image;

import java.awt.event.KeyEvent;

import util.GameUtil;

public class Plane {

Image img;

double x,y;

int speed = 10;

boolean left,up,right,down;

public void draw(Graphics g)

{

g.drawImage(img,(int)x,(int)y,null);

move();

}

public Plane(String imgpath, double x, double y) {

super();

this.img = GameUtil.getImage(imgpath);

this.x = x;

this.y = y;

}

public Plane() {

}

public void move() {

if(left) {

x -= speed;

}

if(right) {

x += speed;

}

if(up) {

y -= speed;

}

if(down) {

y += speed;

}

}

}

这个是运动物体的类

求助各位帮我看下到底哪里除了问题

显示的结果是,按方向键确实可以移动,可是释放键并不停止移动

java键盘监听keyadapter_JAVA 键盘监听当中,释放键盘并没有停止运动相关推荐

  1. Java中使用JNA实现全局监听Linux键盘事件

    title: Java中使用JNA实现全局监听Linux键盘事件 date: 2019-05-03 19:08:00 Java中使用JNA实现全局监听Linux键盘事件 用JNA实现的键盘监听,在Wi ...

  2. Java中使用JNA实现全局监听Windows键盘事件

    title: Java中使用JNA实现全局监听Windows键盘事件 date: 2019-05-02 21:55:00 Java中使用JNA实现全局监听Windows键盘事件 前言: 一直打算做一个 ...

  3. AWT—鼠标监听,窗口监听,键盘监听

    AWT-鼠标监听,窗口监听,键盘监听 鼠标监听 目的:实现鼠标作画 package com.deng.lesson03; ​ import java.awt.*; import java.awt.ev ...

  4. Android App监听软键盘按键的三种方式与改变软键盘右下角确定键样式

    Android App监听软键盘按键的三种方式与改变软键盘右下角确定键样式 actionNone : 回车键,按下后光标到下一行 actionGo : Go, actionSearch : 放大镜 a ...

  5. activemq 开启监听_ActiveMQ 消息监听 MessageListener 的使用

    刚学 ActiveMQ, 最开始搭建环境的时候引入的jar 包,几个核心的jar jms.jar, httpcore.jar , httpclient.jar, activemq-all.jar 准备 ...

  6. oracle 双结点监听文件,RAC监听服务两个节点 只能起一个

    我的问题是, RAC系统有两个节点, endpoints_listener和istener 配置如下: node1: LISTENER_DB1=(DESCRIPTION=(ADDRESS_LIST=( ...

  7. watch深度监听数组_vue watch普通监听和深度监听实例详解(数组和对象)

    vue watch普通监听和深度监听实例详解(数组和对象) 下面通过一段代码给大家介绍vue watch的普通监听和深度监听,具体代码如下所示: var vm=new Vue({ data:{ num ...

  8. js微信监听返回_JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法...

    在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的需求,那在代码中怎样监听当点击微信.支付宝.百度糯米.百度钱包等 ...

  9. Vue监听器的基本使用(监听属性-深度监听和立即执行)

    一:vue监听器-基本使用 语法是: watch: {"被监听的属性名" (newVal, oldVal){}} 方便理解,示例代码: <template><di ...

  10. oracle一般监听配置文件,Oracle监听配置讲解

    本文作者:贺圣军,叩丁狼高级讲师.原创文章,转载请注明出处. 很多使用Oracle的朋友遇到最多的问题就是Oracle数据库已经安装完成, 但是在使用Oracle客户端pl/sql等工具却怎么都连接不 ...

最新文章

  1. iOS---Objective-C: +load vs +initialize
  2. PostgreSQL-8-数据合并
  3. 面向对象 - 继承性
  4. vue+lowdb+express
  5. syntax error: unexpected end of file
  6. ssh(Spring+Spring mvc+hibernate)——DeptDaoImpl.java
  7. san框架计数的textarea
  8. JAVA基础_修饰符
  9. java远程插件动态注册机制_Spring运行时动态注册bean的方法
  10. Codeforces Round #480 (Div. 2) B. Marlin
  11. 解决忽略vscode中pylint报错的问题
  12. 菲律宾马尼拉华人区一大厦发生火灾 致1人遇难
  13. Android技巧:ListView去掉橙黄底色
  14. loj10099 点双连通分量
  15. 程序员们的“钢铁审美”:花花公子封面女郎如何成为互联网第一夫人?
  16. 命令提示窗口输出汉字
  17. html实现在线聊天,利用HTML5实现电脑端微信聊天窗口界面
  18. 华为交换机导入配置_将一个华为交换机的配置导入另一个已有配置的交换机中...
  19. position 属性
  20. 神经性脚臭案例整理(三)

热门文章

  1. ghost还原固态硬盘_最完整用GHOST安装UEFI(GPT)引导的系统请关注收藏
  2. tp5.0 php版本,ThinkPHP v5.0.2官方下载-ThinkPHP v5.0.2 完整版官方最新版-东坡下载
  3. html获取一条一条的li,html – 在一个li中定位一个span
  4. li标签横向排列_lt;bdigt; | HTML5 双向隔离标签
  5. html页面滚动导致阴影出现,三种处理滚动穿透问题方案的对比
  6. windows7中安装jdk1.8
  7. 基于C语言的软件,基于C语言的计算机软件编程分析
  8. 基于JAVA+SpringBoot+Mybatis+MYSQL的旅游管理系统
  9. Linux最常用的基础命令 下篇
  10. navicat 将自增长字段重置(重新从1开始)的方法