我只想要一个可编辑字段将数字显示为货币,例如
1.444.444,90
我已经检查过NumeralFieldFormatter但是当我将它与构造函数或生成器一起使用时。没关系,它总是给我类似 20000.0 的东西
NumeralFieldFormatter currencyOne = new NumeralFieldFormatter.Builder()
.decimalMark(",")
.decimalScale(2)
.delimiter(".")
.thousandsGroupStyle(NumeralFieldFormatter.ThousandsGroupStyle.THOUSAND)
.build();
currencyOne.extend(textfield);
我做错了什么或者vaadin有更好的可能性吗?这么大的框架怎么可能没有内置任何货币,或者我根本找不到它?
提前致谢
最佳答案
您可以将 Binder 与转换器一起使用:
public class HelloWorldView extends VerticalLayout {
private final DecimalFormat decimalFormate = new DecimalFormat("###,###,###.00");
public HelloWorldView() {
Binder<Person> binder = new Binder<>(Person.class);
TextField name = new TextField("Name");
binder.forField(name)
.bind("name");
TextField salary = new TextField("Salary");
binder.forField(salary)
.withConverter(new Converter<String, BigDecimal>() {
@Override
public Result<BigDecimal> convertToModel(String value, ValueContext context) {
if (value == null || value.length() == 0) {
return Result.ok(new BigDecimal(0));
} else {
return Result.ok(new BigDecimal(value));
}
}
@Override
public String convertToPresentation(BigDecimal value, ValueContext context) {
if (value == null) {
return "";
} else {
return decimalFormate.format(value);
}
}
})
.bind("salary");
binder.setBean(new Person());
add(name, salary);
}
请在此处找到整个示例: https://github.com/simasch/vaadin-formatting
关于java - 如何在以货币样式格式化的 Vaadin 文本或数字字段中显示数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73123859/