我尝试为TextField
执行自动格式化,但我遇到了问题。理想情况下,我只想让thousand separator
继续。这是我到目前为止与此实验有关的内容:
@FXML
Textfield textfield
public initialize() {
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumIntegerDigits(6);
numberFormat.setParseIntegerOnly(true);
TextFormatter form = new TextFormatter(new NumberStringConverter( numberFormat));
//why dont this work?
textfield.setTextFormatter(form);
//this thing "works"
textfield.onKeyReleasedProperty().setValue(event -> {
textfield.setText( String.valueOf( form.getValueConverter().fromString( textfield.getText())));
});
}
那里没有太多信息,而且我仍然是阅读文档的新手。我如何获得thousand separator
?那里有比这更好的解决方案吗?
有没有办法让formatter
在达到最大值时拒绝新输入,现在它取代最后一位数字,并删除第一位数字。
编辑: 是的,那段代码感觉不好,但我还没有学到任何其他方法。 我已经尝试过你的建议了。它并没有像预期的那样真正起作用。由于我之前没有使用过微调器,文本格式化程序,过滤器或unaryOperator,也没有理解它们,我很难排除故障。
真的只有我想要的1000000 -> 1 000 000
。我相信这个功能会做到这一点。但很难说,因为javadocs并没有真正说出分组意味着什么。
form.setGroupingUsed(true);
我现在把它放在架子上。但如果有人知道javafx8中格式化数字的好方法,请告诉我。