向javafx中的文本字段添加特殊字符

向javafx中的文本字段添加特殊字符,java,javafx,javafx-2,javafx-8,scenebuilder,Java,Javafx,Javafx 2,Javafx 8,Scenebuilder,我想在文本字段中添加一个特殊字符。 例如,我想在用户键入的日期之间自动添加/。 或者在数字中的某些数字之间添加一些空格,比如:“2020” 我使用了这个代码,但它不能正常工作 textfield.textProperty().addListener(new ChangeListener<String>(){ @Override public void changed(ObservableValue<? extends String> ov, String t, St

我想在文本字段中添加一个特殊字符。 例如,我想在用户键入的日期之间自动添加
/
。 或者在数字中的某些数字之间添加一些空格,比如:“2020”

我使用了这个代码,但它不能正常工作

textfield.textProperty().addListener(new ChangeListener<String>(){
  @Override
 public void changed(ObservableValue<? extends String> ov, String t, String t1) {
       if(t1.length()==4 || t1.length()==9 || t1.length()==14){
          textfield.setText(t1+" ");
           System.out.println("space added");
    }
}
textfield.textProperty().addListener(新的ChangeListener()){
@凌驾

public void changed(ObservalEvalue添加空格很好。我认为问题在于,在添加额外文本后,您希望移动克拉位置。您可以使用
textfield.getCaratPosition()
查找当前位置,并使用
textfield.positionCarat(…)
更改它


不过,逻辑将非常复杂,这在很大程度上取决于用户正在做什么,以及您希望文本字段的行为。例如,如果由于用户删除某些内容而导致文本发生更改,该怎么办?复制和粘贴如何?

我想您必须实现一个方法:changed()。谢谢。我忘了在这里写。但我在主程序中写的。所以这不是我的问题。t1的值是多少?它是否进入循环?如果是,在进入文本区域后是否尝试按tab键或在文本区域外单击?方法是否执行?您的代码对我来说很好:它在我期望的位置添加了一个空格。更改将空格改为可见字符(“/”),您就会看到它。(但是,如果删除字符,例如当长度从5变为4时,…
textField.setText(t1+));
将在字符串的末尾添加空格。是的,你说得对。它太复杂了!而且没有任何解决方案?有没有库可以这样做?其他程序员做什么???!!