为什么会有";按下“键”;不是用java工作吗?

为什么会有";按下“键”;不是用java工作吗?,java,Java,我想如果我在java中按了'n'char print一些东西,我会将操作提供给keylistener,但我不知道为什么它不起作用 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Test extends JPanel implements KeyListener { public Test() { super(); this.ad

我想如果我在java中按了'n'char print一些东西,我会将操作提供给keylistener,但我不知道为什么它不起作用

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Test extends JPanel implements KeyListener {


    public Test() {

           super();
           this.addKeyListener(this);
    }
 //*************key*********************************
  public void keyTyped(KeyEvent e) {
     }
  //*************key*********************************************************************
     public void keyPressed(KeyEvent e) {
         if(e.getKeyChar()=='n'){
             System.out.print("hhhhhh");

             }
    }
 //*************key**********************************************************************
     public void keyReleased(KeyEvent e) {
    }
//**************************************************

   public static void main(String[] args) {
           JFrame frame = new JFrame("java lover");
          Test panel=new Test();
          frame.add(panel);
               frame.setSize(600, 600);
               frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

   }
}

感谢您的帮助。

并非Swing中的所有组件都会收到关键事件,只有那些可聚焦的组件才会收到关键事件。 将以下行添加到构造函数中,它就会工作:

public Test() {
    setFocusable(true);
    addKeyListener(this);
}

代码样式:使用super()显式调用超级构造函数可以省略(实际上,默认的超级构造函数将被隐式调用)。此外,在访问本地方法或字段时,不必使用
此。

您的面板应该是可聚焦的。将构造器更改为此,它将工作:

public Test() {
    super();
    setFocusable(true);
    addKeyListener(this);
}

所以印刷不叫印刷吗?或者?当我在上面的代码中按'n'char时,它没有打印任何东西。它必须是print hhh,但它不是print。