スイングタイマーに問題があります (と思います)。私は問題なく動作するコードをいくつか書き、それを新しいコンピューターに移動しましたが、すぐに動作しなくなりました。このメソッドを使用して、(JFrame に基づく) GUI クラスを作成しました。
public void Splash(){
mainPanel.add(Empous.splash, BorderLayout.CENTER);
while(Empous.splash.GetCount() < 3){
//System.out.println(Empous.splash.GetCount());
}
}
メソッドは別のクラスから呼び出されます。その Empous.splash は、スプラッシュ アニメーションを実行するだけの JPanel クラスです。それはスイングタイマーで行います。スプラッシュ クラス内で、リスナーは次のコードを使用してフレームの内容を調整します。
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 ステートメントがコメント アウトされていると、タイマーが停止した後にプログラムがフリーズします。コメントを外すと、プログラムはカウンターの値を出力し、そのまま続行します。print ステートメントを取り出して、何もせずに while ループを実行したいのですが、現在の動作では実行できません。どんな助けでも感謝します。