在javafx中的文本字段中添加一个特殊字符

时间:2014-04-08 19:48:31

标签: java javafx javafx-2 javafx-8 scenebuilder

我想在文本字段中添加一个特殊字符。 例如,我想在用户输入的日期之间自动添加/。 或者在数字中的某些数字之间添加一些空格。如下所示:" 2020 2020 2020 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");
    }
}

}

1 个答案:

答案 0 :(得分:1)

它添加空间就好了。我认为问题是你想在添加额外文本后移动克拉位置。您可以使用textfield.getCaratPosition()查找当前位置,使用textfield.positionCarat(...)进行更改。

逻辑虽然非常复杂,但在很大程度上取决于用户正在做什么以及您希望文本字段的行为方式。例如。如果文本因用户删除某些内容而发生变化会怎么样?复制和粘贴怎么样?