GUI不会在帧中显示命令

时间:2015-03-31 08:42:33

标签: java user-interface actionlistener

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

1 个答案:

答案 0 :(得分:0)

只有在返回调用线程的所有挂起和运行方法后,才会更新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

的相应章节