解释 Java 中的 KeyListener

Posted

技术标签:

【中文标题】解释 Java 中的 KeyListener【英文标题】:Explain the KeyListener in Java 【发布时间】:2018-12-11 23:07:47 【问题描述】:

我是 Java 新手,正在使用机器人类。我想为我的机器人设置紧急停止功能,这样当它出现问题时,我可以结束自动化。虽然到目前为止机器人很容易关键听众逃脱了我,但请以“我的第一个关键听众”的方式解释,谢谢! 这是我目前所拥有的:

public static void keyboard(String input, HWND window) throws Exception 
        System.out.println("Keyboard Typing:\n" + input);
        //This is just to stop the error, but I don't know how
        //to actually listen
        KeyEvent e = null;  
        for (int i = 0; i < input.length(); i++) ;
            keepFocus(window);
            if(stopBot(e /*How to pass a key press*/) == true)
                break;
            
            char c = input.charAt(i);
            keyboardHandler(c);
            Thread.sleep(80);
        
    

    public static boolean stopBot(KeyEvent e)
        if(e.getKeyCode() == KeyEvent.VK_END)
            return true;
        
        return false;
    

还有其他代码,但这就是与我的问题相关的全部内容

【问题讨论】:

“请以“我的第一个 keylistener”风格解释” 所以不是教程服务。您有(具体)问题吗? 我看过的许多与我类似的其他问题是:“给你:(代码在这里)”我想理解代码,而不仅仅是复制粘贴和交叉手指@AndrewThompson 【参考方案1】:

我认为实现键事件的最简单方法是让您当前的类扩展一个键侦听器类。基本上,您希望您当前的班级在后台监听击键。您将首先将实现添加到您的类名:

public YourClassName implements KeyListener 

现在,您的班级可以在后台收听击键。你现在需要在你的代码中添加一个监听器,然后给它说明当被击中时要做什么。您将通过调用以下方法添加侦听器:

this.addKeyListener()

您还可以将“this”替换为任何其他能够处理动作事件的实例化对象。现在,您只需要能够指示程序在侦听器接收到击键事件时要做什么。按键侦听器将从您正在扩展的 KeyListener 类中调用一种方法:keyPressed(KeyEvent e)、keyRelease(KeyEvent e) 或 keyTyped(KeyEvent e)。这些函数将在拾取键事件并通过函数传递时运行您想要的任何代码。您将需要像这样覆盖这些方法:

@Override
public void keyReleased(KeyEvent e) 
        //whatever you want to happen in the case of 
        this event, I assume stop your robot

因此,如您所见,您无需担心调用自己的 KeyEvent,只要您扩展了类并给出了每个事件的操作说明,Java 的 addKeyListener 就会处理这个问题!希望这会有所帮助!

【讨论】:

扩展是指实现吗?我从扩展中得到一个错误,说要更改为实现或使我的类成为接口。还有在哪里调用 this.addKeyListener() 似乎错误地说它不能被静态调用? 我很抱歉——我完全做到了!让我编辑一下。它不能从静态上下文中调用,你应该将它添加到你正在监听的任何对象中。如果它在你粘贴的同一个类中,你只需要在你想要监听之前的任何时候设置它击键。如果您在将其置于非静态上下文中时遇到问题,您可以考虑让您的类实现 Runnable 或者可能是一个没有主类的对象。 好的,现在它不再是静态的,但是当我实例化实现 keylistener 的对象时,Java 无法识别 .addKeyListener() 试试'addKeyListener(this)'

以上是关于解释 Java 中的 KeyListener的主要内容,如果未能解决你的问题,请参考以下文章

java中的数据源是啥?有人可以用简单的语言解释一下吗?

用 Rhino 解释 Java 中的 JavaScript:暂停/恢复脚本

需要解释:Java中的私有访问修饰符

Java中的一些术语的解释

JAVA中的那些名词解释!

重载与Java中的继承一起工作吗?解释这个概念