2011-05-06 33 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小時),日曆方法只是邁出了一天,你不會得到預期的結果。

相關問題