自动格式化文本字段

时间:2015-05-05 09:52:45

标签: javafx-8 textfield

我尝试为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中格式化数字的好方法,请告诉我。

0 个答案:

没有答案