gpt4 book ai didi

properties - JavaFX 8 绑定(bind)数字格式

转载 作者:行者123 更新时间:2023-12-04 14:11:13 34 4
gpt4 key购买 nike

有人可以给我看一个 Bindings.bindBidirectional 的示例,其中文本字段绑定(bind)到 Double 值,并且文本字段的格式设置为零小数位。我有这个绑定(bind):

Bindings.bindBidirectional(xProperty, sp.layoutXProperty(), converter);

其中 xProperty 是 StringProperty,sp.layoutXProperty 是 DoubleProperty。

我尝试了许多不同的转换器并最终确定:
NumberFormat nf = NumberFormat.getInstance();    
StringConverter<Number> converter = new NumberStringConverter(nf);

然后我尝试了:
nf.setParseIntegerOnly(true);

但无济于事。这只是实现这一结果的众多尝试之一。这可能是直截了当的,但是关于将不同属性与格式绑定(bind)的信息似乎很少而且相距甚远,或者我错过了显而易见的事情?

最佳答案

查看此代码,看看它是否解决了您的问题:

public class BindingTest {
static Property<String> sp;
static Property<Double> dp;

public static void main(String[] args) {
sp = new SimpleStringProperty();
dp = new SimpleObjectProperty<>();

StringConverter<Double> sc = new StringConverter<Double>() {
@Override
public String toString(Double object) {
if (object != null)
return Integer.toString((int) Math.round(object.doubleValue()));
else
return null;
}

@Override
public Double fromString(String string) {
Double d = Double.parseDouble(string);
sp.setValue(Integer.toString((int) Math.round(d)));
return d;
}
};

Bindings.bindBidirectional(sp, dp, sc);

print();
sp.setValue("3.14");
print();
dp.setValue(6.18);
print();
}

public static void print() {
System.out.println("String: " + sp.getValue() + "\t" + "Double: " + dp.getValue());
}
}

输出:
String: null    Double: null
String: 3 Double: 3.14
String: 6 Double: 6.18

关于properties - JavaFX 8 绑定(bind)数字格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32173624/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com