私は、 Swing Timer クラスまたはSwingUtilities.InvokeLaterを提案する主題に関するさまざまなスレッドを読んでいました。
...しかし、私は頭を包むのに苦労しています。
カウントダウンタイマーを作成するためにatomicIntegerを使用しましたが、コンソールで正常に動作します。ただし、Swingに組み込んでみると、開始値と終了値のみが更新されます(たとえば、5秒のカウントダウンがフレームに表示されるように設定します:「5」-> 5秒後->「0」。
atomicInteger カウントダウン ラベルを保持して「更新」する簡単な方法はありますか、または Swing Timer クラスを使用する唯一の方法はありますか?
お待ちいただいてありがとうございます!
ps。宿題ではなく、勉強するためのカスタム タイマーを自分で作ろうとしているだけです。(つまり、先延ばし)
このクラスで十分だと思います。フレーム/パネル コードも必要な場合はお知らせください。
private class ClickListener implements ActionListener{
public void actionPerformed(ActionEvent e){
int t_study = 5;
atomicDown.set(t_study);
if (e.getSource() == b_study){
while(atomicDown.get() > 0){
t_study = atomicDown.decrementAndGet();
l_studyTime.setText(Integer.toString(t_study));
try {
Thread.sleep(1000);
}
catch (InterruptedException e1) {
System.out.println("ERROR: Thread.sleep()");
e1.printStackTrace();
}
}
}
else if(e.getSource() == b_exit){
System.exit(0);
}
else
System.out.println("ERROR: button troll");
}
}