java - 按键时执行的操作

标签 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) {

    }
}

最佳答案

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

检测控制台中的按键操作不是 Java 本身所做的事情,您需要等到用户按下 Enter

您可以使用某种 Curses 库,但这会集成到 native 系统中,这可能会限制程序的实用性

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

关于java - 按键时执行的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25926010/

相关文章:

java - 可视化 Ant build.xml 文件依赖关系的工具

java - 警告 : [unchecked] unchecked cast. 泛型

c# - 如何在For循环中的控制台应用程序中播放声音,听起来好像有人在打字?

c# - 如何在 C# 控制台应用程序中绘制框、矩形

java - KeyListener - 我需要在主程序中调用 keyPressed 方法吗?

java - Tomcat意外关闭无踪

扩展 Kotlin 基类的 Java 类无法调用基类的内部方法

azure - 是否可以使用 Windows 服务应用程序创建 Azure 服务总线中继?

Enter 上的 Angular(点击)事件按下发送 MouseEvent 而不是 KeyboardEvent

java - KeyListener 不工作并且映射重叠字符