在按键时执行的操作

时间:2014-09-19 03:41:09

标签: java console-application keylistener keyevent

当我使用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) {

    }
}

1 个答案:

答案 0 :(得分:2)

KeyListener是AWT框架的一个接口,它旨在与GUI一起使用,不能用于基于控制台的应用程序。

在控制台中检测按键不是Java原生的,你需要等到用户按 Enter

您可以使用某种类型的Curses库,但这会带来与本机系统的集成,这可能会限制程序的实用性

同样,在程序没有焦点的情况下监视击键(在后台)也不是Java所做的,你需要求助于JNI / JNA解决方案