为什么会有";按下“键”;不是用java工作吗?
我想如果我在java中按了'n'char print一些东西,我会将操作提供给keylistener,但我不知道为什么它不起作用为什么会有";按下“键”;不是用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
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。