Swing是一个单线程框架。
也就是说,对UI的所有交互和修改都应在事件调度线程的上下文内进行。阻塞此线程的所有内容都将阻止其处理,尤其是重画请求和用户输入/交互。
我的猜测是
playGame正在使用类似
Thread.sleep或类似的东西
while(true)并且阻止了EDT,导致您的程序看起来像被冻结了一样
阅读Swing中的并发以了解更多详细信息。
一个简单的解决方案是使用Swing
Timer充当游戏循环。每次打勾时,您都将更新游戏状态并调用(类似)
repaint游戏组件

Swing是一个单线程框架。
也就是说,对UI的所有交互和修改都应在事件调度线程的上下文内进行。阻塞此线程的所有内容都将阻止其处理,尤其是重画请求和用户输入/交互。
我的猜测是
playGame正在使用类似
Thread.sleep或类似的东西
while(true)并且阻止了EDT,导致您的程序看起来像被冻结了一样
阅读Swing中的并发以了解更多详细信息。
一个简单的解决方案是使用Swing
Timer充当游戏循环。每次打勾时,您都将更新游戏状态并调用(类似)
repaint游戏组件