在新线程中拥有监听器

时间:2014-11-05 21:11:56

标签: java multithreading return keylistener runnable

我尝试将KeyListener放入项目中名为Thread的新Keys中,因为我的主要线程已经在循环中。所以我希望这个方法在按下键时返回boolean。我对Java很陌生,很抱歉,如果这只是一个愚蠢的错误。

public class Keys implements KeyListener, Runnable {

    private boolean w = false;
    //private boolean ... same stuff

    public void keyTyped(KeyEvent keyEvent) {
        //nothing in here ;)
    }
    public void keyPressed(KeyEvent keyEvent) {
        //set right boolean true = no problem
    }
    public void keyReleased(KeyEvent keyEvent) {
        //set right boolean false = no problem
    }

    public void run() {
        //nothing to do here
    }

    public boolean isWPressed(){
        return w;
    }
    //public boolean is...() [more of them.]
}

我很感激一个例子。这是我学习的最佳方式。

2 个答案:

答案 0 :(得分:1)

您的程序不会调用监听器。当发生适当的事件时,Java VM会调用Listener。例如:假设您为KeyListener写了TextField。如果用户开始输入此TextField,则运行系统将调用侦听器中的相应方法。因此,监听器由VM调用,而不是由您的代码调用,因此您无法为onw线程编写它。 This link很好地介绍了Java中的事件和监听器。

修改

正如SJuan76所提到的,你可以从侦听器启动单独的线程来做你想要的东西。

答案 1 :(得分:0)

您正在使用的Java Key Listener已经在其自己的线程上运行。没有必要试着把它放在它自己的主题中。

然而,阅读注释,如果你想在按下某个键时启动一个新线程,你可以。以下是您可以采用的方法:

Thread thread = new Thread(this, "Keyboard Thread");

希望这有帮助!