Java:类型<classname>中的方法keyPressed(KeyEvent)不适用于参数(int)

时间:2015-08-26 18:55:51

标签: java

我是java的初学者,我尝试实现以下目标:我的程序在后台不断运行(因此它甚至不是活动窗口),当我按Enter键时,它打印出一个文本。我的问题可以在标题中看到,当我将鼠标悬停在&#34; keyPressed&#34;在我的主要方法(我使用eclipse)。我不确定我做错了什么,也许我完全误解了这应该是怎么回事。

public class Test implements KeyListener {

    private static boolean done = false;

    public static void main(String[] args) {
        while(!done) {
            keyPressed(KeyEvent.VK_ENTER);
        }
    }

    @Override
    public void keyPressed(KeyEvent e) {
        System.out.println("I got it working! I think.");
        done = true;

    }

    @Override
    public void keyReleased(KeyEvent e) {
        // TODO Auto-generated method stub

    }

    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub

    }
}

有没有人知道我做错了什么?

2 个答案:

答案 0 :(得分:0)

您正在调用内部方法com.dish.wsapi.WsapiJsonFileCreate.keyPressed(KeyEvent),它具有键事件作为输入,但您传递的是整数值java.awt.event.KeyEvent.VK_ENTER

答案 1 :(得分:0)

KeyEvent.VK_ENTER定义为与键盘上返回键的键代码对应的int值。正确的实现方法是创建一个新的KeyEvent对象,并在将其作为参数传递之前将KeyEvent.VK_ENTER指定为对象的键码。

Test obj = new Test();
KeyEvent e = new KeyEvent(new JButton(), 0, 0, 0, KeyEvent.VK_ENTER, '\0');
obj.keyPressed(e);