图形用户界面不在框架中显示命令

问题描述:

我用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(); 
    } 
+0

我们帮不了你现在 - 你需要给我们提供更多的代码。你可以尝试提供一个完整的例子(编译;并可以运行重现你的问题)? – GhostCat 2015-03-31 08:45:42

+0

一件好事就是用英文编写代码,所以它会更容易理解,所以不同的人想读你的代码 – damus4 2015-03-31 08:46:37

+0

好的是从谷歌驱动器的压缩好吗? – 2015-03-31 08:46:57

你的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

+0

好吧,thx我有schrödinger那个,但是没有在书中到目前为止,我会搜索完本章后,thx帮助 – 2015-04-01 12:45:35

+0

它工作!多谢! :) – 2015-04-01 12:49:01