[英]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.