public static void moveTo(Coordinate destination) {
changeState(State.NAVIGATION);
controlPnl.addRemote(Remote.createRemote(remoteType.NAVIGATION));
dmc.moveTo(destination);
changeState(State.IMMEDIATE);
controlPnl.addRemote(Remote.createRemote(remoteType.IMMEDIATE));
}
在此代码中,addRemote 方法使用新按钮更新 controlPnl GUI。dmc.moveTo 方法中最多有两个 Thread.sleep 调用,我认为它们是在 controlPnl GUI 更新之前被调用的。我已经注释掉了 dmc.moveTo 之后的两个方法调用,这会将 GUI 更改回调用之前的状态,并且 controlPnl 直到 moveTo 完成执行才完成更新。我需要的是 GUI 在 moveTo 方法开始执行之前完成更新并使线程进入睡眠状态。有什么方法可以在 Java 6 中实现这一点吗?
如果重要,moveTo 方法会将 LEGO Mindstorm 机器人移动到用户定义的路径上的指定点。正在更新的 GUI 提供 Swing 组件(JButtons 和 JRadioButtons)供用户在机器人导航时控制机器人。addRemote 方法更改了一组 Swing 组件供用户使用,moveTo 方法向机器人发送命令以实际执行运动(通过告诉它的电机移动,休眠正确的时间量,然后告诉它的电机停止移动)。我正在使用状态机模式,此方法是处理来自 UI 的事件的控制器的一部分。