【问题标题】:KeyListener and boolean not workingKeyListener 和布尔值不起作用
【发布时间】:2013-08-12 22:38:51
【问题描述】:
import java.awt.Robot;
import java.awt.event.KeyEvent;

public class Main {
    static boolean check = false;
    static boolean boom = true;

    public static void main(String[] args) throws Exception{
        do{
        if(check == true){
            Robot r = new Robot();
            r.delay(1000);
            r.keyPress(KeyEvent.VK_DECIMAL);
            r.keyRelease(KeyEvent.VK_DECIMAL);
            r.keyPress(KeyEvent.VK_M);
            r.keyRelease(KeyEvent.VK_M);
            r.keyPress(KeyEvent.VK_E);
            r.keyRelease(KeyEvent.VK_E);
            r.keyPress(KeyEvent.VK_N);
            r.keyRelease(KeyEvent.VK_N);
            r.keyPress(KeyEvent.VK_U);
            r.keyRelease(KeyEvent.VK_U);
            r.keyPress(KeyEvent.VK_ENTER);
            r.keyRelease(KeyEvent.VK_ENTER);
        }
        }while(boom == true);
    }

    public void keyPressed(KeyEvent e){
        int keyCode = e.getKeyCode();
        if(keyCode == KeyEvent.VK_F9){
            check = true;
            boom = true;
        }
        if(keyCode == KeyEvent.VK_F11){
            check = false;
            boom = false;
        }
    }
}

这是我的代码,我希望它像这样工作: 当你按下 F9 时它应该开始写 .menu 并且当按下 F11 时它应该停止。 有什么帮助吗?

【问题讨论】:

  • 你有一个keyPressed 函数,这是KeyListener 类的一部分吗?如果是这样,它附着在什么上面?

标签: java boolean awt keylistener awtrobot


【解决方案1】:

您没有可供 KeyListener 收听的 GUI 组件。 KeyListener 要求将它们添加到呈现的 GUI 内的组件中,并且被监听的组件具有焦点。您的应用程序没有这些。我什至在您的代码中的任何地方都没有看到 KeyListener 对象。

如果您想创建一个侦听关键事件的 GUI,请考虑在 Swing tutorials 上学习如何创建 Java Swing GUI,然后考虑使用 Key Bindings 代替低级侦听器,例如 KeyListener .

另一方面,如果您希望创建一个没有 GUI 的通用按键记录程序,那么我建议您不要使用 Java,而是使用其他可以与操作系统更紧密集成的语言。

【讨论】:

    猜你喜欢
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 2013-07-22
    • 2013-07-03
    • 1970-01-01
    • 2011-11-29
    • 2016-02-20
    相关资源
    最近更新 更多