在 Swing 中使用 KeyListener 的 3 个方法时感到困惑?

Getting confused while using KeyListener's 3 methods in Swing?

我正在尝试构建一个只能接受数字的 textfield。我尝试了很多次,但我得到了 3 种方法的行为。 这三个方法同时调用,但所有方法 return 对 getKeyCode() 方法的值不同。为什么这些方法 return 有不同的值?还有一件事,当我尝试将 keyListener 添加到 JApplet 时,它不接受键值?为什么?

import java.awt.event.*;
import javax.swing.*;

public class SimpleKey1 extends JApplet implements KeyListener
{
     String msg="";


     JTextField jTextField;
     int x = 10, y = 20; 

     public void init()
     {
         addKeyListener(this);

         requestFocus();
     }

     @Override
     public void keyPressed(KeyEvent arg0) {
        showStatus("Key Pressed");
     }

     @Override
     public void keyReleased(KeyEvent arg0) {
        showStatus("Key Released");
     }

     @Override
     public void keyTyped(KeyEvent arg0) {
         msg+=arg0.getKeyChar();
         repaint();
     }

     public void paint(Graphics g)
     {
         g.drawString(msg, x, y);
     }

}

改用JFormattedTextField并提供只接受数字的格式。 因为这个原因不需要写那么多代码。

文档位于 http://docs.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html