gpt4 book ai didi

java - 使用 while 语句时不出现 JFrame

转载 作者:行者123 更新时间:2023-12-02 03:14:09 26 4
gpt4 key购买 nike

我希望游戏继续循环,直到 GameOver 为 false。

我曾经用 if 来做到这一点,但游戏并没有真正循环,所以我使用了 while 语句。但在我尝试编译它之后,我的 JFrame 根本不会出现!事实上什么也没有出现。

有什么可能的解决方案来解决这个问题吗?

public void game() {
while (GameOver != true) {
ATT1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (b.Death == false) {
a.Att1(b, Fireball);
} else {
a.Att1(c, Fireball);
}
}
});
ATT2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (b.Death == false) {
a.Att2(b, Fireball);
} else {
a.Att2(c, Fireball);
}
}
});
}
}

最佳答案

如果你检查系统统计 CPU 使用率图表,很可能会飙升,对吧?

这是因为您正在启动一个长时间运行的循环,其中没有耗时的操作,导致短时间内执行多次(从而导致 CPU 负载)。我敢打赌您从另一个 Action 监听器中调用 game() 对吗? (也许在按下“开始游戏”按钮后)

我认为由于缺乏对基于 Swing 的应用程序如何工作的了解,您对 GUI 代码的处理方法是错误的。由于引入了并发性,它与结构化编程有很大不同并且更加复杂。您正在阻塞 EDT(比如说 GUI 线程),导致框架无法正确绘制。

首先阅读 Oracle 关于如何构建 Swing 应用程序的指南,您可以在此处找到该指南:https://docs.oracle.com/javase/tutorial/uiswing/

关于java - 使用 while 语句时不出现 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40562837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com