私は 3 つJSpinner
の s を持っています。1 つは時間、1 つは分、もう 1 つは秒です。分と秒の最大値は 60、最小値は -1、時間の最小値は -1、最大値は 24 です。秒が 60 になると、0 に戻り、分が 1 つずつ増加します。 . ダウン機能と時分針のアップダウン機能についても同様の動作があります。この手法は、24 時間制をナビゲートする際に問題なく機能します。
ただし、12 時間以内に問題が発生しました。左にJCheckBox
( amPmCheckBox
) があり、12 時間制を有効または無効にします。現在、12 時間制への変換も問題なく機能するため、これをクリックしてもJCheckBox
問題ありません。JToggleButton
左に( )がありamPmToggleButton
ますね。これにより、稼働中 (選択解除) の場合は AM が表示され、停止中 (選択済み) の場合は PM が表示されます。
さて、問題は変換ではなく (うまくいったと言いました)、スクロールにあります。スピナーを上にスクロールすると、たとえば、午後 11 時から午前 12 時まで移動する必要があります。amPmToggleButton
ただし、時間スピナーが制限の1つに達して反転するたびに状態が切り替わるようにしています(これは簡単に検出できます。getAlarmHrs() > MAX_ALARM_AMPM_HRS
他にあるかどうかを確認するだけですgetAlarmHrs() < MIN_HRS
。)今、そこに私の問題があります。AM/PM サイクルごとに 12 時間あるはずです。ただし、午前 1 時から午前 12 時までと午後 1 時から午後 12 時までです。AM/PM を知っている人なら誰でも、これが間違っていることを知っています。
AM と PM をいつ切り替えるかを知るためにこれをプログラムするにはどうすればよいですか?
この目覚まし時計は、24 時間制で完全に機能することを忘れないでください。