因为你的jPanel1没有焦点。

解决方案 »

  1.   

    窗口上什么也没有,你希望哪里能响应你的事件呢?放个文本框试试会不会响应;
    粘过去执行看看
    package test;import java.awt.event.*;
    import javax.swing.*;
    import java.awt.*;public class Application1 {
      boolean packFrame = false;  //Construct the application
      public Application1() {
        Frame1 frame = new Frame1();
        frame.show();
      }
      //Main method
      public static void main(String[] args) {
        new Application1();
      }
    }class Frame1 extends JFrame {
      JPanel contentPane;
      BorderLayout borderLayout1 = new BorderLayout();
      JPanel jPanel1 = new JPanel();
      JTextField textField=new JTextField();
      //Construct the frame
      public Frame1() {
        enableEvents(AWTEvent.WINDOW_EVENT_MASK);
        try {
          jbInit();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
      //Component initialization
      private void jbInit() throws Exception  {
        contentPane = (JPanel) this.getContentPane();
        contentPane.setLayout(borderLayout1);
        this.setSize(new Dimension(400, 300));
        this.setTitle("Frame Title");
        textField.setColumns(10);
        jPanel1.add(textField);
        jPanel1.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent e) {
                jPanel1_keyPressed(e);
        }
        });
        contentPane.add(jPanel1, BorderLayout.NORTH);
      }
      //Overridden so we can exit when window is closed
      protected void processWindowEvent(WindowEvent e) {
        super.processWindowEvent(e);
        if (e.getID() == WindowEvent.WINDOW_CLOSING) {
          System.exit(0);
        }
      }  void jPanel1_keyPressed(KeyEvent e) {
        System.out.println("key pressed");
      }
    }
      

  2.   

    to zhouwj(阿杰):
    那你说该怎么改?是不是加requestFoucos(boolean)?我试过的,没有用。
      

  3.   

    要先设置jPanel1.setRequestFocusEnabled(true);
    然后jPanel1.requestFoucos();
    jPanel1就可以接收事件了
      

  4.   

    这是 1.4 的一个 Bug
    在 1.3 下就没有问题了