我有一個包含瓷磚和瓷磚包含障礙的板。障礙物可以是幾種類型之一(牆壁,激光,...)。刷新Swing GUI
遊戲的每一輪我執行董事會,它執行所有的障礙。一旦障礙物被執行並且某些東西已經改變,GUI就會被通知並且受影響的瓷磚被刷新。
在GUI中,tile是一個包含重疊圖像(JLabels)的OverLayLayout,因此所有重疊的圖像都可見。
現在的問題是當我執行它們時,它會變得很快,你什麼都不會發生。例如。你看不到激光束出現,玩家將會被損壞,但你沒有看到它發生...
所以我試着讓遊戲等待500ms,用戶可以看到GUI更新。我試過了(但可能做錯了):定時器,搖擺機,countdownlatch,但我似乎無法得到它的工作。 關於如何解決這個問題的任何想法?或者也許是等待的替代方案?
在此先感謝!
更新: 中板執行如下:
Iterator<Obstacle> it = obstacles.iterator();
while (it.hasNext())
it.next().execute(this);
CountDownLatch countDown = new CountDownLatch(1);
setChanged();
notifyObservers(countDown);
countDown.await();
的GUI板(這是通知)的更新功能如下:
final CountDownLatch countDown = (CountDownLatch) arg;
SwingUtilities.invokeLater(new Runnable(){
public void run() {
try {
updateUI();
wait(500);
} catch (InterruptedException ex) { }
countDown.countDown();
}
});
沒有一些代碼,它就像一個盲人管理員試圖走出一個賭場(FYI賭場建造像labyrints讓人們在裏面)。 –
雖然我們在這裏,但我現在在Java項目中遇到了問題。我嘗試了很多東西,但它不起作用。任何想法如何解決它,OP? –
Sry我忘了,補充說。 ;) –