2009-08-15 9 views
0

Existe-t-il une sorte de méthode intégrée ou une fonction simple qui convertira Duration en une chaîne au format hh:mm:ss? Par exemple, je cherche quelque chose qui convertirait une durée de 123402 ms en une chaîne de "2:03".JavaFX: formatage Durée en chaîne?

Répondre

1

Alternativement, vous pouvez utiliser les drapeaux de java.util.Formatter.

action: function() { 
    txt = "{%tM dur}.{%tS dur}" 
} 

Cela se traduira par un 0, comme dans "02,03", pour "dur = 123402ms".

0

Vous pouvez convertir une durée en chaîne à l'aide de String.valueOf (dur). Vous pouvez ensuite utiliser les classes de formatage Java pour reformater la chaîne. Vous devez couper la fin de String en raison de la façon dont JavaFX formate les durées en chaînes (par exemple '123402.0ms'). Si JavaFX avait une fonction Long.valueOf (dur), cela serait plus facile.

Voir exemple ci-dessous:

import javafx.stage.Stage; 
import javafx.scene.Scene; 
import javafx.scene.text.Text; 
import javafx.scene.text.Font; 
import javafx.scene.control.Button; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

var fmt = new SimpleDateFormat("m:ss"); 
var dur: Duration = 123402ms; 
var txt: String = String.valueOf(dur); 

Stage { 
    title : "Duration Switch" 
    scene: Scene { 
     width: 400 
     height: 200 
     content: [ 
      Text { 
       font : Font { 
        size: 24 
       } 
       x: 10, y: 30 
       content: bind "Duration={txt}" 
      }, 
      Button { 
       translateY: 140 
       text: "Switch" 
       action: function() { 
        var durStr = String.valueOf(dur); 
        durStr = durStr.substring(0, durStr.indexOf(".")); 
        var date = new Date(Long.parseLong(durStr)); 
        txt = fmt.format(date); 
       } 
      } 
     ] 
    } 
}