| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 677 人关注过本帖
标题:键盘事件,没反应
只看楼主 加入收藏
wuzhong
Rank: 1
等 级:新手上路
帖 子:233
专家分:0
注 册:2006-10-23
收藏
 问题点数:0 回复次数:7 
键盘事件,没反应

import javax.swing.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class TestKey extends JFrame {
public TestKey() {
MyPanel myPanel=new MyPanel();
this.getContentPane().add(myPanel);
setSize(300, 200);
setLocation(100, 100);
setVisible( true );
}

class TestKeyListener extends KeyAdapter{
public void keyPressed(KeyEvent event) {
System.out.println("===========================" + event.getKeyCode());
}

public void keyReleased(KeyEvent event){
System.out.println("W释放" + event.getKeyCode());
}

public void keyTyped(KeyEvent event){
if (event.getKeyCode() == KeyEvent.VK_K) {
System.out.println("按下一次 pressed and released");
}
}
}

class MyPanel extends JPanel{
public MyPanel(){
addKeyListener(new TestKeyListener());
}
}
public static void main(String args[]) {
TestKey application = new TestKey();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
}

搜索更多相关主题的帖子: 键盘 
2007-01-18 14:01
海狂
Rank: 1
等 级:新手上路
威 望:1
帖 子:234
专家分:0
注 册:2006-12-26
收藏
得分:0 

应该是焦点问题
你把addKeyListener(new TestKeyListener())直接加到JFrame中就不会有问题


2007-01-18 14:27
海狂
Rank: 1
等 级:新手上路
威 望:1
帖 子:234
专家分:0
注 册:2006-12-26
收藏
得分:0 
而且像键盘事件必须注册到顶级窗口类才有效 如JFrame
否则你要为每个可能得到焦点的控件都添加addKeyListener()
我知道的也许也不是很准确 有人看我说得不对 别扁人

2007-01-18 14:36
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
不错,楼上说的对,一般给JPanel加键盘监听是没有用的,必须要是可获输入焦点的组件,在获得焦点的时候才可以接受键盘事件

可惜不是你,陪我到最后
2007-01-18 15:27
禹_二
Rank: 1
等 级:新手上路
帖 子:661
专家分:0
注 册:2006-9-13
收藏
得分:0 
public void keyTyped(KeyEvent event){
if (event.getKeyCode() == KeyEvent.VK_K) {
System.out.println("按下一次 pressed and released");
}
为什么不可以呢?

2007-01-18 18:51
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
收藏
得分:0 
keyTyped只在输入的时候才会调用,一般用于注册到JTextField,JTextArea等输入组件上

普通组件是不会调用的

可惜不是你,陪我到最后
2007-01-18 19:17
禹_二
Rank: 1
等 级:新手上路
帖 子:661
专家分:0
注 册:2006-9-13
收藏
得分:0 
哦,原来如此.

2007-01-18 19:50
wuzhong
Rank: 1
等 级:新手上路
帖 子:233
专家分:0
注 册:2006-10-23
收藏
得分:0 
昨天的帖子,今天中午才有时间看.问题解决,知道了.

2007-01-19 13:08
快速回复:键盘事件,没反应
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018148 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved