implements KeyListener了按键监听却监听不到

今天写游戏,按键监听却是总也添加不上去苦思冥想,

我实现了接口但是监听不到

后来才发现我只是实现了结口却没调用它仔细想来就在控件panel上面添加了一个addKeyListener(this);

写监听一定要记得让控件去触发总之来说还是基础不牢固,马虎

其次我有在其他的程序里测试发现方法都写了也不行:后来比较了一下少了个

this.setFocusable(true);

网上一查才知道还需要获取焦点,伙伴们你们知道了么?

将控件设置成可获取焦点状态,默认是无法获取焦点的,只有设置成true,才能获取控件的点击事件

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.event.KeyAdapter;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import javax.swing.JFrame;

import javax.swing.JPanel;

public class mainFrame extends JFrame {

private KeyboardPanel keyboardPanel =new KeyboardPanel();

public mainFrame(){

add(keyboardPanel);

keyboardPanel.setFocusable(true);

}

public static void main(String [] args){

mainFrame frame = new mainFrame();

frame.setTitle("mainFrame");

frame.setSize(300,300);

frame.setLocationRelativeTo(null);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

static class KeyboardPanel extends JPanel implements KeyListener{

private int x=100;

private int y=100;

private char keyChar = ‘A‘;

public KeyboardPanel(){

setBackground(Color.cyan);

addKeyListener(this);

/*addKeyListener(new KeyAdapter(){

public void keyPressed(KeyEvent e){

switch (e.getKeyCode()){

case KeyEvent.VK_DOWN:

y+=10;

break;

case KeyEvent.VK_UP:

y-=10;

break;

case KeyEvent.VK_LEFT:

x-=10;

break;

case KeyEvent.VK_RIGHT:

x+=10;

break;

default:

keyChar=e.getKeyChar();

}

//repaint();

}

});*/

}

protected void paintComponent(Graphics g){

super.paintComponent(g);

g.setFont(new Font("TimesRoman",Font.PLAIN,40));

g.drawString(String.valueOf(keyChar), x, y);

}

@Override

public void keyPressed(KeyEvent e) {

// TODO Auto-generated method stub

switch (e.getKeyCode()){

case KeyEvent.VK_DOWN:

y+=10;

break;

case KeyEvent.VK_UP:

y-=10;

break;

case KeyEvent.VK_LEFT:

x-=10;

break;

case KeyEvent.VK_RIGHT:

x+=10;

break;

default:

keyChar=e.getKeyChar();

}

repaint();

}

@Override

public void keyReleased(KeyEvent e) {

// TODO Auto-generated method stub

}

@Override

public void keyTyped(KeyEvent e) {

// TODO Auto-generated method stub

}

}

}

时间: 2024-10-08 09:59:25

implements KeyListener了按键监听却监听不到的相关文章

TabActivity 返回键 onBackPressed 监听 dispatchKeyEvent 监听

TabActivity 返回键 onBackPressed 监听  dispatchKeyEvent 监听 早上碰到TabActivity 返回键的监听事件,出现各种问题.瞎忙了一早上,最后google兼看文档终于找到解决的办法.下面结合别人,解决办法:我们知道,在普通的Activity中可以重写onKeyDown(intkeyCode, KeyEventevent)方法对手机按键进行监听,而当要监听的Activity为TabActivity时(其实ListActivity也一样),这个方法并不

使用听云监听手游网络和崩溃的日志

经朋友介绍认识了“听云”这款产品,一直苦于监测手游的崩溃日志.我们专门搭建的日志上报系统每天会收集大概4G左右的日志,信息量很大,并且有效信息很少,还需要筛选.抱着试试看的态度,使用了一下听云. 我司游戏iOS和Android都有,所以我同时接入了两个平台的探针. 在我满怀欣喜的看到可以设置"game"类型的App并且看到数据后傻眼了.我擦,Android平台只能看到Java层访问网络的情况.如下图,两个域名都是游戏发行商的SDK在Java层做的网络访问. 游戏里C++对服务器访问的数

如何说孩子才会听,怎么听孩子才肯说

我之前不太会像老婆那样和孩子慢慢的.感性的沟通,我更喜欢单刀直入的分析问题.解决问题,这让我在和孩子的沟通中会显得过于直接,沟通效果也并不好. 如何更好的与孩子沟通交流,正是我阅读<如何说孩子才会听,怎么听孩子才肯说>这本书的初衷,也确实有很多的收获,尤其是,该如何与孩子沟通.如何赞扬孩子 那么,如何说孩子才会听,怎么听孩子才肯说?读完后回答这个问题,我觉得可以是这样的: 倾听孩子的感受,描述你所看到的或你的感受,以感性方法去沟通,在良好沟通的基础上,再输出你的看法. 一些摘录: 关于感受 关

SWT/JFace 按键、事件、监听

JAVA.SWT/JFace: 按键与其对应的常量表.KeyEvent事件比较.VerifyEvent事件比较 2010年07月27日 星期二 22:19 <Eclipse SWT/JFACE 核心应用>清华大学出版社 8.3.2 键盘事件的各种属性 按键与其对应的常量表: 按键 keyCode常量 方向键下 SWT.ARROW_DOWN 方向键上 SWT.ARROW_UP 方向键左 SWT.ARROW_LEFT 方向键右 SWT.ARROW_RIGHT Alt键 SWT.ALT 空格键 SW

android自定义组件监听,监听网络,防止组件点击过快重复点击

1 组件监听事件,业务逻辑之前判断网络情况 public abstract class OnClickNetworkListener implements View.OnClickListener { @Override public void onClick(View v) { boolean isNetworkOk = Config.isNetworkConnected(Config.currentContext); if (isNetworkOk) { onNetworkClick(v);

(转)oracle 启动监听 报“监听程序不支持服务” 解决

转自 http://www.51testing.com/html/99/478599-842622.html 今天安装了oracle后,启动监听,报错如下: 启动tnslsnr: 请稍候... TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production 写入E:\oracle\product\10.2.0\db_2\network\log\listener.log的日志信息 监听: (DESCRIPTION=(ADDRESS=(PROT

Android 软键盘的监听(监听高度,是否显示)

Android官方本身没有提供一共好的方法来对软键盘进行监听,但我们实际应用时,很多地方都需要针对软键盘来对UI进行一些优化. 以下是整理出来的一个不错的方法,大家可以使用. 不过要注意的是,由于是使用ViewTreeObserver来进行监听,所以每次layout有所改变的话,都会触发,所以listner里面如果有改变layout的方法的话,要注意不要陷入无限触发循环了,这时需要加入一些标记值来规避,这个可以参考代码注释 public class SoftKeyboardUtil { publ

v-once指令、v-cloak指令、条件指令家族、原义指令、循环指令、todolist案例、实例成员-符号、实例成员-计算属性、实例成员-属性监听、监听的案例、局部组件、全局组件、组件交互(父传子、子传父)

v-once指令: v-once:单独使用,限制的标签内容一旦赋值,便不可被动更改(如果是输入框,可以主动修改) <div id="app"> <input type="text" v-model="msg"> <!-- 一旦赋值,只可主动更改 --> <input type="text" v-model="msg" v-once> <p>{{ m

一个监听事件监听多个按钮

private Button btnWrite; private Button btnRead; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnRead = (Button) findViewById(R.id.btnRead); btnWrite = (Button) findV