У меня есть 3 JSpinner
s, один для часов, один для минут, один для секунд. Минуты и секунды имеют максимальное значение 60 и минимальное значение -1, а часы имеют минимальное значение -1 и максимальное значение 24. Если второй достигает 60, он возвращается к 0 и увеличивает минуты один за другим. . Существует аналогичное поведение для функции вниз и функции вверх и вниз для часов и минут. Этот метод работает безупречно при навигации по 24-часовому времени.
ОДНАКО я столкнулся с проблемами за 12 часов. У меня есть JCheckBox
(amPmCheckBox
) слева, который активирует или деактивирует 12-часовое время. Теперь преобразование в/из 12-часового времени также работает без нареканий, так что нажатие этой JCheckBox
не проблема. Видите, слева есть JToggleButton
(amPmToggleButton
). Отображает AM, если оно вверху (не выбрано), и PM, если оно внизу (выбрано).
Теперь проблема заключается не в конвертации (помните, я сказал, что это сработало), а в прокрутке. Когда я прокручиваю счетчик вверх по часам, он ДОЛЖЕН идти, скажем, с 23:00 до 00:00. ОДНАКО, у меня это так, что amPmToggleButton
переключает свое состояние каждый раз, когда счетчик часов достигает одного из своих пределов и переворачивается назад (что легко обнаружить. Я просто проверяю, если getAlarmHrs() > MAX_ALARM_AMPM_HRS
иначе, если getAlarmHrs() < MIN_HRS
.) Теперь, в этом и заключается моя проблема. В цикле AM/PM СУЩЕСТВУЕТ 12 часов, как и должно быть. ОДНАКО, они идут с 1:00 до 12:00 и с 13:00 до 12:00. Любой, кто знает AM / PM, знает, что это неправильно.
Как мне запрограммировать это, чтобы знать, когда переключаться между AM и PM?
Помните, что этот будильник работает абсолютно идеально в 24-часовом режиме.