2

フロートで特定のタスクにかかる推定時間(分)があります。これをJFormattedTextFieldに次の形式で配置するにはどうすればよいHH:mm:ssですか?

4

2 に答える 2

6

Calendarフロートが1440未満の場合は、とで回避できます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メソッドは1日だけ転送され、期待される結果が得られないことに注意してください。

于 2011-05-06T18:22:15.820 に答える
4

JFormattedTextFieldはオブジェクトを受け入れます。つまり、 を呼び出して取得した をFormat渡すことができます。フォーマット文字列としてaを使用することもできます。DateFormatDateFormat#getTimeInstance()SimpleDateFormatHH:mm:ss

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


の使用に制限されていない場合は、次の回答に示すように、Java 1.5 以降で使用可能なクラスJFormattedTextFieldを使用して独自の書式設定を行うことを検討することもできます: How to convert Milliseconds to "X mins, x seconds" in Java?TimeUnit

于 2011-05-06T17:41:03.640 に答える