2011-05-06 5 views
1

플로트에서 특정 작업을 수행하는 데 예상되는 시간이 몇 분입니다. 어떻게 이것을 HH:mm:ss의 형식으로 JFormattedTextField에 넣을 수 있습니까?JTextField in HH : mm : ss

+4

시도해 보셨습니까? 자습서를 읽었습니까? http://download.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html#format – jzd

+3

이것은 'JProgressBar'에 더 적합한 작업처럼 들립니다. –

답변

3

JFormattedTextFieldFormat 개체를 허용합니다. DateFormat#getTimeInstance()을 호출하면 DateFormat을 전달할 수 있습니다. 형식 문자열로 과 HH:mm:ss을 사용할 수도 있습니다.

은 참조 : 당신이 JFormattedTextField를 사용하여 제한하지 않는 경우이 답변에서와 같이 http://download.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html#format


, 당신은 또한, 자바 1.5부터 사용할 수있는 TimeUnit 클래스를 사용하여 자신 만의 서식을, 일을 고려해 볼 수 있습니다 : How to convert Milliseconds to "X mins, x seconds" in Java?

+0

문제는 제가 밀리 초가 아니라 시간이 분이라는 것입니다. – davidahines

+1

@dah 당신이 할 수있는베이스'Date'를 가지고 계시나요? 즉, 걸릴 시간 *이 있나요? , 말하자면, 5 분, 작업을 마칠까요? –

+0

Nope. 십진 분만 기록됩니다. – davidahines

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 시간)에 동일한 경우는 일정 방법 것입니다 단지 앞으로 하루 당신이 원하는 결과를 얻을 수 없습니다.