当我使用KeyListener
按下字母'a'时,我只想打印到控制台。基本上,当我运行程序时发生的是它打开然后关闭。如果我一直按键,它会运行更长时间,但不会打印到控制台。我的代码出了什么问题?
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class APresser implements KeyListener {
private static int keyCode;
public static void main(String[] args) {
}
public void aPressed(KeyEvent e) {
keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_A) {
System.out.println("A was pressed!");
}
}
public void keyPressed(KeyEvent e) {
aPressed(e);
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
}
答案 0 :(得分:2)
KeyListener
是AWT框架的一个接口,它旨在与GUI一起使用,不能用于基于控制台的应用程序。
在控制台中检测按键不是Java原生的,你需要等到用户按 Enter
您可以使用某种类型的Curses库,但这会带来与本机系统的集成,这可能会限制程序的实用性
同样,在程序没有焦点的情况下监视击键(在后台)也不是Java所做的,你需要求助于JNI / JNA解决方案