java键盘监听keyadapter_JAVA 键盘监听当中,释放键盘并没有停止运动
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 键盘监听当中,释放键盘并没有停止运动相关推荐
- Java中使用JNA实现全局监听Linux键盘事件
title: Java中使用JNA实现全局监听Linux键盘事件 date: 2019-05-03 19:08:00 Java中使用JNA实现全局监听Linux键盘事件 用JNA实现的键盘监听,在Wi ...
- Java中使用JNA实现全局监听Windows键盘事件
title: Java中使用JNA实现全局监听Windows键盘事件 date: 2019-05-02 21:55:00 Java中使用JNA实现全局监听Windows键盘事件 前言: 一直打算做一个 ...
- AWT—鼠标监听,窗口监听,键盘监听
AWT-鼠标监听,窗口监听,键盘监听 鼠标监听 目的:实现鼠标作画 package com.deng.lesson03; import java.awt.*; import java.awt.ev ...
- Android App监听软键盘按键的三种方式与改变软键盘右下角确定键样式
Android App监听软键盘按键的三种方式与改变软键盘右下角确定键样式 actionNone : 回车键,按下后光标到下一行 actionGo : Go, actionSearch : 放大镜 a ...
- activemq 开启监听_ActiveMQ 消息监听 MessageListener 的使用
刚学 ActiveMQ, 最开始搭建环境的时候引入的jar 包,几个核心的jar jms.jar, httpcore.jar , httpclient.jar, activemq-all.jar 准备 ...
- oracle 双结点监听文件,RAC监听服务两个节点 只能起一个
我的问题是, RAC系统有两个节点, endpoints_listener和istener 配置如下: node1: LISTENER_DB1=(DESCRIPTION=(ADDRESS_LIST=( ...
- watch深度监听数组_vue watch普通监听和深度监听实例详解(数组和对象)
vue watch普通监听和深度监听实例详解(数组和对象) 下面通过一段代码给大家介绍vue watch的普通监听和深度监听,具体代码如下所示: var vm=new Vue({ data:{ num ...
- js微信监听返回_JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法...
在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的需求,那在代码中怎样监听当点击微信.支付宝.百度糯米.百度钱包等 ...
- Vue监听器的基本使用(监听属性-深度监听和立即执行)
一:vue监听器-基本使用 语法是: watch: {"被监听的属性名" (newVal, oldVal){}} 方便理解,示例代码: <template><di ...
- oracle一般监听配置文件,Oracle监听配置讲解
本文作者:贺圣军,叩丁狼高级讲师.原创文章,转载请注明出处. 很多使用Oracle的朋友遇到最多的问题就是Oracle数据库已经安装完成, 但是在使用Oracle客户端pl/sql等工具却怎么都连接不 ...
最新文章
- iOS---Objective-C: +load vs +initialize
- PostgreSQL-8-数据合并
- 面向对象 - 继承性
- vue+lowdb+express
- syntax error: unexpected end of file
- ssh(Spring+Spring mvc+hibernate)——DeptDaoImpl.java
- san框架计数的textarea
- JAVA基础_修饰符
- java远程插件动态注册机制_Spring运行时动态注册bean的方法
- Codeforces Round #480 (Div. 2) B. Marlin
- 解决忽略vscode中pylint报错的问题
- 菲律宾马尼拉华人区一大厦发生火灾 致1人遇难
- Android技巧:ListView去掉橙黄底色
- loj10099 点双连通分量
- 程序员们的“钢铁审美”:花花公子封面女郎如何成为互联网第一夫人?
- 命令提示窗口输出汉字
- html实现在线聊天,利用HTML5实现电脑端微信聊天窗口界面
- 华为交换机导入配置_将一个华为交换机的配置导入另一个已有配置的交换机中...
- position 属性
- 神经性脚臭案例整理(三)
热门文章
- ghost还原固态硬盘_最完整用GHOST安装UEFI(GPT)引导的系统请关注收藏
- tp5.0 php版本,ThinkPHP v5.0.2官方下载-ThinkPHP v5.0.2 完整版官方最新版-东坡下载
- html获取一条一条的li,html – 在一个li中定位一个span
- li标签横向排列_lt;bdigt; | HTML5 双向隔离标签
- html页面滚动导致阴影出现,三种处理滚动穿透问题方案的对比
- windows7中安装jdk1.8
- 基于C语言的软件,基于C语言的计算机软件编程分析
- 基于JAVA+SpringBoot+Mybatis+MYSQL的旅游管理系统
- Linux最常用的基础命令 下篇
- navicat 将自增长字段重置(重新从1开始)的方法