簡體   English   中英

GUI不在框架處顯示命令

[英]GUI doesn't show the command at the frame

我用Java為學校編寫了一個小游戲。 我們有具有給定功能的庫。 我寫了一個重復命令的代碼(同時),我用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM