JAVAFx TextField验证十进制值

Far*_*tan 3 java regex javafx

我试图限制文本字段为十进制数字,我已经找到了整数验证的解决方案在这里,但问题是,我不能够将下面的代码转换为十进制数字,像324.23,4.3,4,2, 10.43.(只允许1个小数点).

 vendorList_textField_remaining.textProperty().addListener(new ChangeListener<String>() {
        @Override
        public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
            if (!newValue.matches("\\d*")) {
                vendorList_textField_remaining.setText(newValue.replaceAll("[^\\d||.]", ""));
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

我也在寻找替代解决方案.谢谢.

小智 5

我遇到了同样的情况.我想我找到了这个问题的解决方案.正则表达式必须由一个新的替换,并由setText稍作更改.目前它运作良好.代码如下:

vendorList_textField_remaining.textProperty().addListener(new ChangeListener<String>() {
        @Override
        public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
            if (!newValue.matches("\\d*(\\.\\d*)?")) {
                vendorList_textField_remaining.setText(oldValue);
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)


Dav*_*ert 1

jidefx-oss项目中有一些优秀的字段验证组件,其中包括一个用于十进制数字的字段验证组件。