这个JAVA程序为什么键盘监听器用不了 和Button 好像冲突了 怎么办

packageTestKey;importjava.awt.*;importjava.awt.event.*;classCloseFreamextendsWindowAd... package TestKey;

import java.awt.*;
import java.awt.event.*;
class CloseFream extends WindowAdapter{
public void windowClosing(WindowEvent arg0) {
System.exit(0);
}
}
class Close extends KeyAdapter{
public void keyTyped(KeyEvent e) {
System.out.print(e.getKeyChar());
if(e.getKeyChar()=='a')
{
System.out.println(e.getKeyChar());
System.exit(0);
}
}
}

class MyFrame extends Frame implements ActionListener{
Button b1,b2;
public MyFrame() {
b1=new Button("click");
b2=new Button("quit");
setLayout(new FlowLayout());
add(b1);
add(b2);
b1.addActionListener(this);
b2.addActionListener(this);
addKeyListener(new Close());
addWindowListener(new CloseFream());
setSize(100,200);
setVisible(true);
}

public void actionPerformed(ActionEvent e) {
if(e.getActionCommand()=="click")
b1.setLabel("bushiba");
else if(e.getActionCommand()=="quit")
System.exit(0);
}
}

public class Testkey {

public static void main(String[] args) {
new MyFrame();
}

}
展开
 我来答
gygwoaini
2011-05-30 · TA获得超过2686个赞
知道小有建树答主
回答量:2001
采纳率:0%
帮助的人:709万
展开全部
在你的构造方法public MyFrame()中加上
this.requestFocus(); //加到方法的最后一行
另外Close 类的keyTyped方法里的
if(e.getKeyChar()=='a')//改成if(e.getKeyChar()==VK_A)
追问
这个是可以了 但是运行以后如果点击了按钮 键盘监听器就又一次失效了 
this.requestFocus();这个语句什么意思呀?
还有VK_A这是什么呀 不懂 嘿嘿 初学者
追答
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand()=="click"){
b1.setLabel("bushiba");
this.requestFocus(); //这里再加上这一句
}
else if(e.getActionCommand()=="quit")
System.exit(0);
}
this.requestFocus();这句话是获取焦点的意思
因为的程序的焦点一开始再Button上,但是键盘监听在窗体上,
所以要重新把焦点设置在窗体上
你点击Button后,焦点又在Button上了

或者你在Button上也设置一个键盘监听也可以。
VK_A是键盘A的代码,其他的你多查查JAVA的API
你可以去看看KeyEvent 这个类的字段摘要

刚才看了一下,你写成'a'也是可以的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式