Java:GUI到控制器的线程通信

Java:GUI到控制器的线程通信,java,swing,Java,Swing,我正在为一个大学项目使用Java构建一个游戏。游戏一开始必须使用文本界面,直到后来我们才添加GUI 我有一个线程运行游戏逻辑并更新游戏模型,还有一个单独的线程,一个带有主功能的线程,在其中实例化JFrame,然后根据游戏状态切换面板(控制器告诉gui使用setPage方法显示哪个帧) 然而,现在让我抓狂的是获得用户输入。 有了文本界面,我所要做的就是调用一个方法,比如getPlayerNum,在用户输入数字并按下enter键后,我将把输入返回控制器。 所有的游戏逻辑都在一个游戏循环中实现,在需要

我正在为一个大学项目使用Java构建一个游戏。游戏一开始必须使用文本界面,直到后来我们才添加GUI

我有一个线程运行游戏逻辑并更新游戏模型,还有一个单独的线程,一个带有主功能的线程,在其中实例化JFrame,然后根据游戏状态切换面板(控制器告诉gui使用setPage方法显示哪个帧)

然而,现在让我抓狂的是获得用户输入。 有了文本界面,我所要做的就是调用一个方法,比如getPlayerNum,在用户输入数字并按下enter键后,我将把输入返回控制器。 所有的游戏逻辑都在一个游戏循环中实现,在需要时请求输入,并将输出通知给视图

既然我被迫使用基于事件的gui,如何模拟类似的行为?
我如何才能阻止方法调用,直到用户单击按钮,然后让方法返回正确的值?

开发独立游戏模型的功劳。作为设计GUI的前奏,请从这个非常简单的步骤开始。添加一个
TextView
,用于侦听模型并报告游戏进度。这将帮助您了解GUI的工作方式,并帮助您确定模型中可能需要的其他功能。

您需要完全重新考虑程序结构,使其不是线性的,而是状态和事件驱动的。不要“阻塞”方法,而是根据模型的状态来改变程序对事件的响应。为了更详细的答案,请考虑一个更具体的问题,完成一小部分可编译和可运行的示例代码。谢谢您的回答。构建文本界面是老师建议的“它将引导你正确地构建游戏周期”,但他“忘记”提到的是,我们的目的是将用户的请求和回答分开。我花了一段时间才把所有的东西分开,但现在它已经开始运行了。感谢你发布的示例,这是一个很好的例子,我希望我能在今天之前看到它。。