JPanel添加键盘监听事件
因为在自己的游戏需求中谢了要用键盘控制飞机的移动,所以用到键盘监听事件,但是使用了JPanel之后添加了键盘监听事件,按相应的方向键飞机并没有反应。但是如果是为JFrame的内容面板加则会有反应。
为了使得能在JPanel里头使用键盘事件解决方法如下:
1、在JPanel里头添加键盘监听
this.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e) {
switch(e.getKeyCode()){
case KeyEvent.VK_UP:
player.move("UP");
break;
case KeyEvent.VK_DOWN:
player.move("DOWN");
break;
case KeyEvent.VK_RIGHT:
player.move("RIGHT");
break;
case KeyEvent.VK_LEFT:
player.move("LEFT");
break;
case KeyEvent.VK_Z: //Z建使用导弹,炸毁所有敌机
player.useMissile(enemyPlanes, bombs);
break;
}
}
});
2、在主函数里头将所要添加的JPnael设置为静态成员
private static BackgroundPanel panelBackground;
3、在JFrame构造函数中初始化静态成员并添加到内容面板,并且在主函数中使JPanel获得焦点
Frame的构造函数中:
panelBackground = new BackgroundPanel();
panelBackground.setBounds(0,0,386,385);
contentPane.add(panelBackground);
主函数中:
GameFrame frame = new GameFrame();
frame.setVisible(true);
GameFrame.panelBackground.requestFocus();
JPanel添加键盘监听事件的更多相关文章
- js 获取当前焦点所在的元素、给元素和input控件添加键盘监听事件、添加页面级的键盘监听事件
页面级的键盘监听事件 document.onkeydown = function (event) { var e = event || window.event || arguments.callee ...
- [置顶] java Gui 键盘监听事件
简单写一个java Gui键盘监听事件,实现的效果就是按下键盘控制台输出你按下的键.比如:按下A控制台就输出A 效果如图: 以下把实现的效果分为几个步骤: 1.新建一个窗体类继承窗体: 2.给这个窗体 ...
- MapControl图层删除或添加触发监听事件
监听MapControl中对于图层添加和删除的事件 IActiveViewEvents_Event m_MapActiveViewEvents = m_mapControl.Map as IActiv ...
- iOS键盘监听事件
1.注册键盘通知事件 NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; // 键盘将出现事件监听 [center ...
- 键盘监听事件KeyListener
说明:按下实体按键,相应虚拟按键变绿色,释放按键,变白色. public class Demo extends JFrame { private List<JButton> list; ...
- Cocos Creator 键盘监听事件
键盘事件键盘.设备重力传感器此类全局事件是通过函数 cc.systemEvent.on(type, callback, target) 注册的.cc.SystemEvent.EventType.KEY ...
- Android 软键盘监听事件
Android软键盘的隐藏显示研究 Android是一个针对触摸屏专门设计的操作系统,当点击编辑框,系统自动为用户弹出软键盘,以便用户进行输入. 那么,弹出软键盘后必然会造成原有布局高度的减少 ...
- vue 键盘监听事件
<template> <div class="hello"> <input v-on:keyup.enter="submit" t ...
- ontouch-控件添加ontouch监听事件
1,代码public class CalculatorViewPager extends ViewPager {}中 package com.android.calculator2; import a ...
随机推荐
- Unity物品栏、商城3D物品的显示插件
UI显示3D模型插件 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创新 ...
- vue查缺补漏题
一.对于MVVM的理解? MVVM 是 Model-View-ViewModel 的缩写.Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑.View 代表UI 组件,它负责将数 ...
- PAT-1084(外观数列 ) && PAT-1085 (PAT单位排行)
1084 利用字符串string的可加性 #include <bits/stdc++.h> using namespace std; int main () { int x,n; cin ...
- JAVA:形参与实参
今天百度startWith函数的用法,无意中看到了形参这个称呼,因此就去了解了下形参与实参. 在传值机制中,其实就是把变量b(实参)的地址传递给了形参(也就是实参跟形参都是用的同一个地址,在传值之前形 ...
- MySql查询出来的值为 boolean类型的值
解决方案: status_flag * 1 as status_flag 乘以1之后就不会是boolean类型的值了
- 当爬虫遇到js加密
当爬虫遇到js加密 我们在做python爬虫的时候经常会遇到许多的反爬措施,js加密就是其中一种. 破解js加密的方法也有很多种: 1.直接驱动浏览器抓取数据,无视js加密. 2.找到本地加密的js代 ...
- ajax解决跨域
http://www.cnblogs.com/sunxucool/p/3433992.html 为什么会出现跨域跨域问题来源于JavaScript的同源策略,即只有 协议+主机名+端口号 (如存在)相 ...
- vue全家桶+Koa2开发笔记(7)--登陆注册功能
1 文件结构:pages中放置页面代码:server 分为 dbs 和interface两个文件夹: dbs设置有关数据库的代码:interface设置接口信息: 2.2 先看dbs的,在dbs的配置 ...
- React中jquery引用
安装jQuery npm i jquery -S 在那个地方使用jQuery就在什么地方引入jQuery import $ from 'jquery'
- What is Zeebe?
转自:https://zeebe.io/what-is-zeebe/ Zeebe is a workflow engine for microservices orchestration. This ...