我不确定为什么我的主要听众不能正常工作。基本上我有一个键在屏幕上打印一个地图,用于导航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仅在自动机器人停止移动时打印。这是线程的问题吗?