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メソッドがcontrolPnlGUIを新しいボタンで更新します。dmc.moveToメソッドには最大2つのThread.sleep呼び出しがあり、controlPnlGUIが更新される前に呼び出されていると思います。dmc.moveToの後に2つのメソッド呼び出しをコメントアウトしました。これにより、GUIが呼び出し前の状態に戻り、moveToの実行が完了するまでcontrolPnlの更新が完了しません。必要なのは、moveToメソッドの実行が開始され、スレッドがスリープ状態になる前に、GUIが更新を完了することです。Java 6でこれを実現する方法はありますか?
重要な場合、moveToメソッドは、レゴマインドストームロボットをユーザーが定義したパス上の指定されたポイントに移動します。更新中のGUIは、ユーザーが移動中にロボットを制御するためのSwingコンポーネント(JButtonsおよびJRadioButtons)を提供します。addRemoteメソッドは、ユーザーが使用するSwingコンポーネントのセットを変更し、moveToメソッドは、実際に移動を実行するコマンドをロボットに送信します(モーターに移動するように指示し、正しい時間スリープしてから、モーターに次のように指示します。移動を停止します)。ステートマシンパターンを使用しています。このメソッドは、UIからのイベントを処理するコントローラーの一部です。