JTextField время в ЧЧ: мм: сс - PullRequest
2 голосов
/ 06 мая 2011

У меня есть приблизительное время, которое потребуется для выполнения конкретной задачи в минутах в поплавке. Как я могу поместить это в JFormattedTextField в формате HH:mm:ss?

Ответы [ 2 ]

6 голосов
/ 06 мая 2011

Для числа с плавающей точкой <1440 вы можете обойтись с помощью <code>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 часа), Календарьметод просто переадресует день, и вы не получите ожидаемых результатов.

4 голосов
/ 06 мая 2011

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, как показано в этом ответе: Как конвертировать Миллисекунды в "Х мин, х секунд" в Java?

...