import java.awt.*;
import java.awt.event.*;public class MyKeyEvent
{
public static void main(String[] args)
{
MyFrame frm=new MyFrame();
frm.show();

}
}/*带按钮板的窗体*/
class MyFrame extends Frame
{
boolean w;
public MyFrame()
{
w=false;
setTitle("测试键盘事件");
setSize(300,200);
MyPanel panel=new MyPanel();
add(panel);
addWindowListener(new MyWindowAdapter());
}

private class MyWindowAdapter extends WindowAdapter
{
public void windowClosing(WindowEvent wevent)
{
if(w)
dispose();
else
System.exit(0);
}
}
}/*带一个按钮的面板*/class MyPanel extends Panel
{
public MyPanel()
{
//创建文本域
TextField tField=new TextField(20);
//将按钮添加到面板
add(tField);
MyKeyAdapter bAction=new MyKeyAdapter();
//将监听器对象添加到文本域
tField.addKeyListener(bAction);
}

/*覆盖KeyAdapter类的keyPressed,KeyReleased,keyTyped方法,但是KeyReleased,keyTyped的方法在输入时却没有反应。不知道是怎么回事*/ 

private class MyKeyAdapter extends KeyAdapter
{
public void keyPressed(KeyEvent kevent)
{
setBackground(Color.red);
repaint();
}
public void KeyReleased(KeyEvent kevent)
{
setBackground(Color.black);
repaint();
}
public void KeyTyped(KeyEvent kevent)
{
if(kevent.getKeyChar() == 'x')
System.exit(0);

}
}
}

解决方案 »

  1.   

    是不是应该直接用KeyAdapter?(不要继承类)。
      

  2.   

    就是说tField.addKeyListener(new KeyAdapter() {
        public void keyPressed(KeyEvent kevent) {
            // do something.
        }});
      

  3.   

    wu_bjcn(咖啡的味道) 眼光锐利,楼主的确没有实现键盘事件的接口,如果键盘事件中的所有方法都要用到的话,不妨class MyPanel extends Panel implements KeyListener {}