2011-05-06 30 views
1

我有一个特定任务需要花费几分钟的时间。我怎样才能把它放在格式为HH:mm:ss的JFormattedTextField中?JTextField time in HH:mm:ss

+4

你试过了什么?你有没有阅读教程? http://download.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html#format – jzd 2011-05-06 17:35:24

+3

这听起来像一个更适合'JProgressBar'的任务。 – 2011-05-06 17:53:19

回答

3

JFormattedTextField接受Format对象 - 您可以通过调用DateFormat#getTimeInstance()来获得DateFormat。您也可以使用SimpleDateFormatHH:mm:ss作为格式字符串。

参见: http://download.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html#format


如果你并不局限于使用JFormattedTextField,您也可以考虑做使用TimeUnit类你自己的格式,可自从Java 1.5,如图这个答案:How to convert Milliseconds to "X mins, x seconds" in Java?

+0

问题是,我有时间在几分钟内,而不是在很长的时间内。 – davidahines 2011-05-06 17:50:42

+1

@dah你有一个基地'日期',你可以使用,即你有*的时间*它将要采取比如说5分钟,要完成任务吗? – 2011-05-06 17:54:42

+0

没有。它仅在十进制分钟内记录。 – davidahines 2011-05-06 17:59:53

4

对于浮动< 1440你可以避开CalendarDateFormat

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小时),日历方法只是迈出了一天,你不会得到预期的结果。

相关问题