1
我剛剛完成了一個項目,涉及創建一個迷宮和編程三個「機器人」,使用不同的策略穿過它。參與我的實現類是:圖形用戶界面沒有正確更新
- 一個抽象類機器人的三個子類
- 它處理的迷宮
- 一個JFrame類,以圖形方式顯示迷宮,展示了機器人的邏輯操作的迷宮類通過它
最後感動,我有一個入口點,只有一個包含以下主要方法:
Maze m = new Maze();
MazeFrame mf = new MazeFrame(m);
RightHandRobot mr = new RightHandRobot(m, mf);
mr.go(m);
這個功能完美 - 迷宮顯示在GUI上,我可以看到機器人在其中移動,直到達到最終效果。
我的問題是這樣的:在JFrame的頂部有三個按鈕,每個按鈕都有一個ActionListener,它創建一個機器人類型的實例並調用其go方法,這會導致它移動,直到它處於「完成單元格「。當我點擊其中一個按鈕時,機器人被創建並開始移動(我可以通過在每次移動中執行的println語句來驗證),但是我看不到在GUI上移動的機器人。只有當機器人到達完成時(即go()方法完成時)才更新GUI,此時顯示機器人採取的整個路徑。
爲什麼當機器人由main方法創建時,GUI更新正確,但是當它由JFrame類創建時,它不會正確更新?
我不確定你需要看到什麼代碼來幫助我,所以讓我知道你需要看什麼。
請出示你的'go'方法和您認爲應該把/從視圖中刪除你的機器人任何部分。 –
你可以發佈你的源代碼嗎?我認爲這個問題可能在機器人課上。 –
聽起來好像你正在更新機器人在EDT中的位置,可能在某種循環中。阻止事件派發線程的任何操作,同時阻止它分派/處理繪畫請求。你還沒有提供任何代碼,所以我只是猜測 – MadProgrammer