У меня есть расчетное время, которое потребуется для конкретной задачи в минутах в поплавке. Как я могу поместить это в JFormattedTextField в формате HH:mm:ss
?
Время JTextField в ЧЧ:мм:сс
Ответы (2)
JFormattedTextField
принимает объект Format
— таким образом, вы можете передать DateFormat
, полученный вызовом DateFormat#getTimeInstance()
. Вы также можете использовать SimpleDateFormat
с HH:mm:ss
в качестве строки формата.
См. также: http://download.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html#format
Если вы не ограничены использованием JFormattedTextField
, вы также можете рассмотреть возможность собственного форматирования с помощью TimeUnit
, доступный начиная с Java 1.5, как показано в этом ответе: Как преобразовать миллисекунды в X минут, x секунд в Java?
Date
, с которой вы можете работать, т.е. есть ли у вас время от, которое потребуется, скажем, 5 минут, чтобы завершить задачу?
- person no.good.at.coding; 06.05.2011
Date
для работы - всего миллисекунды от значения, например 5 минут, дадут вам только время относительно начала эпохи (1 января 1970 г., 00:00:00 по Гринвичу). См. мой отредактированный ответ о том, как вы можете легко отформатировать его так, как хотите, с помощью класса TimeUnit
.
- person no.good.at.coding; 06.05.2011
System.out.println(new Date(0)); System.out.println(new Date(5 * 60 * 1000));
Один из вариантов, который может вам подойти, — это использование TimeUnit
и указанной статьи для реализации вашего собственного класса Format (просто расширьте java.text.Format и реализуйте абстрактные методы). Таким образом, вы получаете лучшее из обоих миров.
- person Anthony Accioly; 06.05.2011
Для поплавка ‹ 1440 можно обойтись Calendar
и DateFormat
.
float minutes = 100.5f; // 1:40:30
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.add(Calendar.MINUTE, (int) minutes);
c.add(Calendar.SECOND, (int) ((minutes % (int) minutes) * 60));
final Date date = c.getTime();
Format timeFormat = new SimpleDateFormat("HH:mm:ss");
JFormattedTextField input = new JFormattedTextField(timeFormat);
input.setValue(date);
Но имейте в виду, что если ваше число с плавающей запятой больше или равно 1440 (24 часа), метод Calendar просто перенесет день вперед, и вы не получите ожидаемых результатов.
JProgressBar
. - person Andrew Thompson   schedule 06.05.2011