图形用户界面不在框架中显示命令
我用Java为学校编写了一个小游戏。我们有给定功能的图书馆。我编写了一个重复执行命令的代码(while),我用println检查了命令运行正常,但在GUI中看不到结果,只看到最后一个结果。图形用户界面不在框架中显示命令
项目:https://drive.google.com/open?id=0B5Ehxz_FAn6BMjVPOWY5MkgycVk&authuser=0
代码:
public void spielen() {
if (guthaben > 0) {
if (endlosspielAktiv) {
while (guthaben > 0) {
kasten.Ringe.faerbeUm(); //Here the GUI doesn't show the results
ZEICHENFENSTER.gibFenster().warte(500);
guthabenRunter();
}
setEndlosspielAktiv(false);
} else {
kasten.Ringe.faerbeUm();
}
} else if (guthaben == 0) {
setEndlosspielAktiv(false);
}
guthabenRunter();
}
你的GUI是只有在所有待定更新和运行调用线程的方法返回。 在您的情况下,GUI的更新将延迟到方法spielen()
返回。
为了有立竿见影的效果,你可以使用一个额外的主题是这样的:
public void spielen() {
new Thread(new Runnable() {
@Override
public void run() {
if (guthaben > 0) {
if (endlosspielAktiv) {
while (guthaben > 0) {
kasten.Ringe.faerbeUm();
ZEICHENFENSTER.gibFenster().warte(500);
guthabenRunter();
}
setEndlosspielAktiv(false);
} else {
kasten.Ringe.faerbeUm();
}
} else if (guthaben == 0) {
setEndlosspielAktiv(false);
}
guthabenRunter();
}
}).start();
}
的spielen()
所有代码异步运行,并不会阻止返回的方法。
如果您想了解更多关于线程,我可以推荐你阅读(德国)的按章电子书http://openbook.rheinwerk-verlag.de/javainsel9/javainsel_14_003.htm
好吧,thx我有schrödinger那个,但是没有在书中到目前为止,我会搜索完本章后,thx帮助 – 2015-04-01 12:45:35
它工作!多谢! :) – 2015-04-01 12:49:01
我们帮不了你现在 - 你需要给我们提供更多的代码。你可以尝试提供一个完整的例子(编译;并可以运行重现你的问题)? – GhostCat 2015-03-31 08:45:42
一件好事就是用英文编写代码,所以它会更容易理解,所以不同的人想读你的代码 – damus4 2015-03-31 08:46:37
好的是从谷歌驱动器的压缩好吗? – 2015-03-31 08:46:57