Java最简单的按键监听器

标签 java input console keylistener

我知道有数以百万计的问题,但我无法理解其中的大多数。我见过人们做了类似的事情:

public void keyPressed(KeyEvent e)
{
    if (e.getKeyCode()== KeyEvent.VK_Q)
        //do something
}

但是 keyPressed 必须重写某些类的方法才能工作或在其他线程中运行。我真的不知道该怎么做。有人可以给我最简单的 java keylistener 代码吗?
即使程序没有聚焦,它也应该可以工作(它只是控制台程序)。

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.*;

import javax.swing.JFrame;

public class SquatCounter {

class MyKeyListener extends KeyAdapter{
    public void keyPressed(KeyEvent e)
    {
        if (e.getKeyCode()== KeyEvent.VK_Q)
            System.out.println("Key Q pressed!");
    }
}

JFrame jf = new JFrame("title");
public SquatCounter() {
    jf.addKeyListener(new MyKeyListener());
}
public static void main(String[] args) {
    Key1 key = new Key1 ();
    SquatCounter test = new SquatCounter();
}
}

最佳答案

当您设置 JFrame 时,添加一个 KeyListener,如下所示:

JFrame jf = new JFrame("title");
jf.addKeyListener(new MyKeyListener());
jf.setVisible(false);

(jf.setVisible(false); 阻止程序窗口出现(仅限命令行)

然后创建一个名为 MyKeyListener 的新类,该类扩展 KeyAdapter

class MyKeyListener extends KeyAdapter{
    public void keyPressed(KeyEvent e)
    {
        if (e.getKeyCode()== KeyEvent.VK_Q)
            System.out.println("Key Q pressed!");
    }
}

现在让我解释一下。

首先,当您创建 JFrame 时,它​​没有附加默认的 KeyListener。因此,我们必须创建一个类MyKeyListener来做到这一点。

其次,我们扩展了 KeyAdapter 而不是实现 KeyListener,因为其中的方法比您需要的要多得多。当你扩展KeyAdapter时,你只需要覆盖keypressed()方法,但你必须实现所有(我认为是3个)其他方法您不需要实现您的目的。

最后,如果您想要执行其他方法,例如 keyreleased(),只需将其添加到 MyKeylistener 类中即可。

希望这有帮助!

编辑:根据OP的要求,应该是这样的:

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line = "";

while (line.equalsIgnoreCase("q") == false) {
   line = in.read();

   System.out.println("Q is pressed!");
}

in.close();

关于Java最简单的按键监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34864625/

相关文章:

JavaScript 子字符串不接受用户输入

forms - 输入框中占位符旁边的红色 Asterisk

c# - 我应该将 Main 方法放在使用 "Host.CreateDefaultBuilder(args).Build();"的控制台应用程序的什么位置?

javascript - 如果存储库中不存在文件,则终止 npm start 并显示自定义错误

java - 简单的 Java 重写方法

java - 获得有关每个抛出的异常(甚至已处理的异常)的通知

javascript - 输入 javascript 已选中 - 未选中

浏览器中的javascript控制台

java - 基于事件的每个记录器的 Log4j 过滤

java - JGit - 如何重用 DiffFormatter