方法睡眠直到事件被触发

时间:2010-01-29 16:10:04

标签: java user-interface swing event-handling multithreading

我有一个扑克框架,我正试图为其开发一个“玩家”。基本上我正在实现一个实现框架定义的Player接口的对象。我试图在这个播放器上放置一个GUI,游戏的工作方式是经销商在我的播放器上调用act()方法并期望返回类型为Action。我遇到的问题是,一旦act()方法被调用,我更新GUI(使用Swing编写)来显示可用的选项,但是我现在需要方法不返回,直到玩家选择了一个选项。选项显示为JButtons,单击时由actionListener对象处理。在用户采取行动之前,如何才能使act()方法无法返回?我需要线程休眠/等待,直到它被触发的事件唤醒,我不确定语法和最佳方法。有什么想法吗?

谢谢,

阿里

2 个答案:

答案 0 :(得分:2)

我认为这种做法存在缺陷。 Act方法不应该等待。相反,它应该在Acted实例上注册一个事件(让我们称之为Player事件)。同时它应该启动一个计时器,比如20秒,如果在计时器用完之前没有提出Acted事件,经销商应该让玩家自动折叠(或根据情况检查)并为下一位玩家做同样的事情。

这只是我的头脑,但想一想。

答案 1 :(得分:1)

如果我不知道你的问题,你需要使用 ActionListener

ActionListener是在您希望在事件发生时发出警告的类中实现的接口。当在代码的其他部分触发特定事件时,将通过Action Listener接口的抽象方法警告此类。

用简短的答案向你展示并不容易,但我得到了一个可以帮助你的世界范例。

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

HIH