两个模拟键盘事件的java程序,功能一样,第一个没问题,第二个有问题,求教问题出在哪里?

第一个:
import java.awt.*;
import java.awt.event.*;

public class TestKey {
public static void main(String[] args) {
new KeyFrame().launchFrame();
}
}

class KeyFrame extends Frame {
public void launchFrame() {
setSize(200, 200);
setLocation(300,300);
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");
        }
    }
}

}

第二个:
import java.awt.*;
import java.awt.event.*;
public class TestKeyUp {
public static void main(String []args) {
Frame f = new Frame();
f.setBounds(0,0,400,400);
f.setBackground(Color.blue);
f.addKeyListener(new NewMonitor());
f.setVisible(true);
}
}

class NewMonitor extends KeyAdapter {
public void KeyReleased(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_UP) {
System.out.println("up");
}

}
}

第一个没有问题,第二个运行时命令行窗口没有任何的输出,是为什么?

我很好奇,你是在学习还是工作中遇到的awt这个包。感觉拿java做c/s还是比较坑的,相当少见