2010-01-29 79 views
2

我有一個撲克框架,我正在爲其開發一個「玩家」。基本上我正在實現一個實現由框架定義的Player接口的對象。我試圖在這個播放器上放置一個圖形用戶界面,遊戲的作用方式是,這個經銷商在我的播放器上調用act()方法,預計返回類型爲Action。我遇到的問題是,一旦act()方法被調用,我更新GUI(使用Swing編寫)來顯示可用的選項,但是現在我需要方法不要返回,直到玩家選擇了一個選項。這些選項顯示爲JButton,點擊時由actionListener對象處理。我如何才能使act()方法在用戶採取行動之前不會返回?我需要線程休眠/等待,直到它被事件觸發喚醒,我不確定語法和最佳方式。有任何想法嗎?方法睡眠,直到事件觸發

感謝,

阿里

回答

2

我認爲這種方法是有缺陷的。 Act方法不應該等待。相反,它應該在Player實例上註冊一個事件(我們稱之爲Acted事件)。同時它應該啓動一個計時器,比如20秒,並且如果在計時器用完之前沒有發生事件,發牌者應該讓玩家自動摺疊(或者根據情況進行檢查)並且執行相同的操作對於下一位玩家來說。

這只是我的頭頂,但想一想。

+0

使用這種方法的經銷商將需要一種方式來提醒玩家輪到他們採取行動,如果這種方法犯規返回然後玩家會再需要一個參考經銷商,使他們可以將執行的操作發送給經銷商。這會在我們的對象之間創建循環依賴關係 – Aly 2010-01-29 17:48:20

1

如果我沒有回答你的問題,你需要使用一個ActionListener

ActionListener是您希望在發生事件時要警告的類中實現的接口。當在代碼的其他部分觸發特定事件時,此類將由Action Listener接口的抽象方法警告。

向您展示一個簡短的答案並不容易,但我得到了一個可以幫助您的世界性問候示例。

http://java.sun.com/docs/books/tutorial/uiswing/events/actionlistener.html

HIH