Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 8 U40 TextFormatter(JavaFX)限制用户仅输入十进制数_Javafx_Java 8_Javafx 8 - Fatal编程技术网

Java 8 U40 TextFormatter(JavaFX)限制用户仅输入十进制数

Java 8 U40 TextFormatter(JavaFX)限制用户仅输入十进制数,javafx,java-8,javafx-8,Javafx,Java 8,Javafx 8,我正在寻找一个示例,使用Java8U40的新类TextFormatter将用户输入限制为仅数字和小数点。 请参见此示例: DecimalFormat format = new DecimalFormat( "#.0" ); TextField field = new TextField(); field.setTextFormatter( new TextFormatter<>(c -> { if ( c.getControlNewText().isEmpty() )

我正在寻找一个示例,使用Java8U40的新类
TextFormatter
将用户输入限制为仅数字和小数点。
请参见此示例:

DecimalFormat format = new DecimalFormat( "#.0" );

TextField field = new TextField();
field.setTextFormatter( new TextFormatter<>(c ->
{
    if ( c.getControlNewText().isEmpty() )
    {
        return c;
    }

    ParsePosition parsePosition = new ParsePosition( 0 );
    Object object = format.parse( c.getControlNewText(), parsePosition );

    if ( object == null || parsePosition.getIndex() < c.getControlNewText().length() )
    {
        return null;
    }
    else
    {
        return c;
    }
}));
DecimalFormat格式=新的DecimalFormat(#.0”);
TextField=newtextfield();
field.setTextFormatter(新的TextFormatter(c->
{
if(c.getControlNewText().isEmpty())
{
返回c;
}
ParsePosition ParsePosition=新的ParsePosition(0);
Object Object=format.parse(c.getControlNewText(),parsePosition);
if(object==null | | parsePosition.getIndex()
  • 这里我使用了构造函数,它只将过滤器作为参数

  • 要了解if语句,请参阅


有关于阅读书籍的建议吗?我对Java还是新手,需要更多的解释。我看了《Java完整参考第九版》,但没有发现与此相关的内容。我甚至找不到replaceText和replaceSelection的用法。我不确定我是否找错了地方,在哪里可以找到关于replaceText/Selection的阅读资料?只有关于JavaFX的单独书籍。所以首先读一本关于Java的书,然后是关于JavaFX的书。如果您了解其他编程语言,如C/C++或C#,您也可以轻松地学习Java。顺便说一下,我在回答中没有使用replaceText/Selection,但您正在询问。这有点断章取义。尽管如此,我还是看到了。这是我的帖子回答了你的问题吗?是的。再次感谢您对我的评论进行跟踪。java附带的格式化程序在这方面不是很好。例如,我不能开始键入前导负号,但可以稍后返回并添加它。因此,更好的答案是什么样的模式也可以接受负十进制数?