import java.awt.*;
import java.awt.event.*;
public class keyTest extends Frame{
private TextArea msg;

/**
 * Method main
 *
 *
 * @param args
 *
 */
public static void main(String[] args) {
// TODO: Add your code here
keyTest kt=new keyTest();
kt.setSize(300,300);
kt.setVisible(true);

}
public keyTest()
{
msg=new TextArea();
msg.setEnabled(false);
add(msg,BorderLayout.CENTER);
Button b=new Button("test");
b.addKeyListener(new KeyListen(this));
add(b,BorderLayout.SOUTH);
}
public void ShowMessage(String str)
{
msg.append(str+"\n");
}
}
 class KeyListen implements KeyListener
{
private keyTest loc;
public KeyListen(keyTest kk)
{
loc=kk;
}
public void KeyPressed(KeyEvent e)
{
//监听
}
public void KeyReleased(KeyEvent e)
{
loc.ShowMessage("char="+e.getKeyChar());
loc.ShowMessage("code="+e.getKeyCode());
loc.ShowMessage("modifier="+e.getModifiers());
}
public void keyTyped(KeyEvent e)
{
//实现方法
}
}
编译后结果是这样的
D:\java练习\lesson11\keyTest>javac keyTest.java
keyTest.java:34: KeyListen is not abstract and does not override abstract method
 keyReleased(java.awt.event.KeyEvent) in java.awt.event.KeyListener
 class KeyListen implements KeyListener
 ^
1 errorD:\java练习\lesson11\keyTest>

解决方案 »

  1.   

    修改class KeyListen implements KeyListener
    为class KeyListen extends KeyAdapter implements KeyListener
      

  2.   

    大哥在帮我看一下为为什么键盘监听没有实现,按下键在松开在点test为什么没有反应
      

  3.   

    编译没错,我不知道你到底按test是什么功能
    按钮实现ActionListener不就行了
      

  4.   

    你写的方法有问题,方法名都是小写字母开头的,你实现keyListener接口的方法有问题.所以不是实现接口的方法而是成了你自己添加2个新的方法.也就是说你没有实现接口.
    public void keyPressed(KeyEvent e){}
    public void keyReleased(KeyEvent e){}
    我也是个初学者,建议你先看看java的编码规范,类名都是大写字母开头,方法名都是小写开头.另外你用的是AWT窗口,运行了连窗口都不能关闭.在你的keyTest()构造函数中加上下面的代码就可以点窗口右上角的关闭按钮关闭窗口了.
    this.addWindowListener(new WindowAdapter(){
    public void windowClosing(WindowEvent e){
    System.exit(0);
    }
    });