KeyListener滞后

时间:2014-10-27 02:10:32

标签: java multithreading keylistener

我不确定为什么我的主要听众不能正常工作。基本上我有一个键在屏幕上打印一个地图,用于导航2d迷宫的机器人。当机器人是手动的(它听取键命令)时,我的keylistener工作。当机器人是自动的时,keylistener仅在机器人停止移动或找到退出时触发。由于程序在自动运行时运行机器人,关键监听器是否有可能无法立即触发与线程有关?我真的很困惑。 这是代码,对不起,如果它看起来很丑陋或令人困惑,我已经对相关部分进行了评论。

private void start() {
    if (selectedMaze != 0) {
        maze.method = selectedMaze;
    }
    if (robot instanceof BasicRobot && driver instanceof ManualDriver) { //If Robot is Manual
        kd = new ManualDriverKeyListener(this, maze, (ManualDriver) driver);
        addKeyListener(kd);
    } else { //If Robot is not manual, thus automatic
        km = new MinimalKeyListener(this, maze);
        addKeyListener(km);
    }
    if (!(robot instanceof BasicRobot) && !(driver instanceof ManualDriver)) {
        try {
            driver.drive2Exit(); //This operates the Automatic Robot
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

我知道MinimalKeyListener有效,因为我已经在那里放了一个System.out.print语句。但是,Keylistener仅在自动机器人停止移动时打印。这是线程的问题吗?

0 个答案:

没有答案