Ben 40
4,0 saniye SimpleIntegerProperty çıkış
Ben Label
ile kullanıcıya bu değeri görüntülemek istiyoruz
SimpleIntegerProperty
var mı nasıl biçimlendirilir hangi should ekran "4,0 s"
Ben basit ve yeniden kullanılabilir Conver oluşturabilirim
label.textProperty().bind(myobject.secondsProperty().asString());
ama nasıl gibi bağlamaları API ile değerini bağlamak istiyorum ter, sadece tek yönlü bağlama ihtiyacım var. , Sen
StringConverter<Integer> deciSecondsConverter = new StringConverter<Integer>() {
@Override
public String toString(Integer deciSeconds) {
return String.format("%.1f s", deciSeconds.doubleValue()/10);
}
@Override
public Integer fromString(String string) {
// not implemented
return null ;
}
};
ve sonra
label.textProperty().bind(Bindings.createStringBinding(
() -> deciSecondsConverter.toString(myobject.getSeconds()),
myobject.secondsProperty()
));
SSCCE yapabilirsiniz Eğer gerçekten bir StringConverter
gerekiyorsa
String secondsFormat = "%.1f s" ;
label.textProperty().bind(myobject.secondsProperty().asString(secondsFormat));
:
Bu beni doğru parçaya getirdi, ancak değer tamsayı olduğundan, dize ile biçimlendirme bu şekilde çalışmaz, çünkü '.1f işlevi int olarak uygulanamaz. This.label.textProperty() gibi bir şey yapmanız gerekir. Bind (Bindings.createFloatBinding (() -> (float) myObject.getSeconds()/10.0f, myObject.secondsProperty()). AsString (secondsFormat)) ; – pfried
Dönüştürücü kendisini düzeltmek için muhtemelen daha iyi. Güncellemeye bakın. –