Swing: интерфейс для таймера обратного отсчета - PullRequest
2 голосов
/ 16 июля 2010

Мне нужен переменный таймер обратного отсчета на 1-10 секунд, который можно остановить и перезапустить.Какой хороший набор элементов пользовательского интерфейса использовать для этого?Мне нужно что-то интуитивно понятное, которое использует довольно небольшое количество экранного пространства, сравнимое с обычным размером JButton.Таймер с кухонными яйцами для выпечки будет лучшей физической аналогией:

альтернативный текст http://ecx.images -amazon.com / images / I / 41oixoyyEAL._SL500_AA300_.jpg

ПРИМЕЧАНИЕ : Я знаю , как реализовать таймеры и перезапустить их, мне просто нужно выяснить, какие элементы пользовательского интерфейса использовать.

ПРИМЕЧАНИЕ 2 :Мне нужен таймер обратного отсчета переменная .Если пользователь хочет 1 секунду, я хочу 1 секундный таймер.Если пользователь хочет 8,2 секундный таймер, я хочу 8,2 секундный таймер.Кухонный таймер, описанный выше, прост, пользователь просто поворачивает его на определенную величину и отпускает.

Ответы [ 5 ]

3 голосов
/ 16 июля 2010

Почему бы не использовать JProgressBar, который начинается с "полного" и очищается при уменьшении времени?Вы накладываете оставшееся время в секундах на планку, избегая, таким образом, использования дополнительного экрана.

1 голос
/ 16 июля 2010

(нелепо) простое решение: если вам не нужно слишком много графического стиля, просто используйте один JButton, который отображает секунды, оставшиеся до запуска таймера. Когда таймер выключен, отображается «Старт»; щелкнув по нему начнется обратный отсчет. Затем вы можете остановить (или приостановить) его, щелкнув во время работы таймера.

1 голос
/ 16 июля 2010

Для краткосрочного решения я использовал JSlider ... Я добавляю ActionListener в его BoundedRangeModel и устанавливаю свой таймер при наличии изменений, а BoundedRangeModel.getValueIsAdjusting () возвращает false. Когда мой таймер ведет обратный отсчет, но еще не истек, а BoundedRangeModel.getValueIsAdjusting () возвращает false, я вызываю BoundedRangeModel.setValue ().

Не слишком доволен этим, но он делает то, что я хочу.

1 голос
/ 16 июля 2010
0 голосов
/ 16 июля 2010

Я бы использовал JSpinner для настройки; javax.swing.Timer для подсчета; и одна кнопка с надписью «Старт» или «Стоп» в зависимости от состояния Timer. Почти все, что нужно для показа, но идея JProgressBar @ Adamski имеет привлекательность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...