簡體   English   中英

Java swing 定時器問題

[英]Java swing timer problems

我在使用(我認為)swing 計時器時遇到問題。 我寫了一些運行良好的代碼,然后將其全部移到我的新計算機上,但很快就無法運行了。 我用這個方法寫了一個 GUI class(基於 JFrame):

public void Splash(){
    mainPanel.add(Empous.splash, BorderLayout.CENTER);
    while(Empous.splash.GetCount() < 3){
              //System.out.println(Empous.splash.GetCount());
    }
}

該方法是從另一個 class 調用的。那個 Empous.splash 家伙是一個 JPanel class,它只運行 splash animation。它使用 swing 計時器執行此操作。 在啟動畫面 class 中,偵聽器通過以下代碼調整我的框架的內容:

private class TimerListener implements ActionListener{
    public void actionPerformed(ActionEvent evt) {
        counter+=1;
        if (counter==1){
            title2.setText("In Association With");
            title1.setText("El Pollo Diablo Productions");
        }
        if (counter==2){
            remove(title2);
            remove(title1);
            repaint();
        }
        if (counter==3){
            timer.stop();
        }
    }
}

現在,如果第一個塊中的打印語句被注釋掉,我的程序將在計時器停止后凍結。 如果我取消注釋,程序將打印出計數器的值,然后繼續下雨。 我想取出 print 語句並讓 while 循環運行而不做任何事情,但我不能按照當前的行為方式這樣做。 任何幫助表示贊賞。

您看起來用這個 while 循環打破了 Swing 的線程規則:

while(Empous.splash.GetCount() < 3){
   //System.out.println(Empous.splash.GetCount());
}

既然你已經有了一個 Swing 定時器,它可以在不釋放事件線程的情況下處理這類事情,你為什么還要擁有這個?

不過,對於更具體的建議,是的,發布sscce

暫無
暫無

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

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