//该程序实现按下向下键,输出up字符串;
//问题:该窗体已有,但在eclipse中运行,只出现窗体,不能打印up。;
import java.awt.*;
import java.awt.Event.*;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowEvent.*;
public class TestKeyEvent{
public static void main(String[] args)
{MyTestKeyEventFrame l=new MyTestKeyEventFrame();
MyWindowAdapter windowadapter=new MyWindowAdapter();
 

l.launchFrame();
l. addWindowListener(windowadapter);

}
class MyTestKeyEventFrame extends Frame
{public void launchFrame()
   {setSize(100,100);
    setLocation(200,200);
    addKeyListener(new MyKeyMonitor());
    setVisible(true);
     }class MyKeyMonitor extends KeyAdapter
{public void keypressed(KeyEvent e)
{ int keyCode=e.getKeyCode();
 if (keyCode==KeyEvent.VK_UP)
 System.out.println("up!");}}
 

 
class MyWindowAdapter extends WindowAdapter
{public void windowClosing(WindowEvent e)
{System.exit(0);}}

解决方案 »

  1.   


    class MyKeyMonitor extends KeyAdapter {
    @Override
    public void keyPressed(KeyEvent e) {
    int keyCode = e.getKeyCode();
    if (keyCode == KeyEvent.VK_UP)
    System.out.println("up!");
    }
    }
      

  2.   

    MyKeyMonitor这个类,要重写父类的方法。
    用适配器和用接口的区别就在这里。
    用适配器比较简单,用哪个方法重写哪个方法就行了。但是方法名写错了你自己也不知道。
    用接口的话,就算是不想重写的方法,也必须写出来。
    @Override用这个注释,可以帮你检查这种错误。
      

  3.   

    public void keyPressed(KeyEvent e)keyPressed   P大写
      

  4.   

    @Override原来有这作用,今天才知道。太菜了……