如何格式化 JFXTextField 以在每两个字符上添加空格?

How to format JFXTextField to add spaces on every two characters?

您好,我正在尝试向我的文本字段添加 space 格式化功能(我正在使用 JFoenix),我的目标是将 100000 写为 10 00 001000000作为 1 00 00 00

这是我的尝试,但我的结果是相反的,因为插入符号失去了位置。

public static void setup(JFXTextField textField) {
    textField.setOnKeyReleased(value->{
         String entredText = textField.getText();
         String noSpaced = entredText.replaceAll("\s+","");
         StringBuilder builder = new StringBuilder();
         for (int i = 0; i < noSpaced.length(); i++) {
             builder.append(noSpaced.charAt(i));
             if (i%2==0) {
                 builder.append(" ");
             }
         }
         textField.setText(builder.toString());
      });
}

为了测试,我在这里面临的问题是:太多 spaces 并且书写颠倒了

感谢 Armel Sahamene 的回答,我们解决了间距问题,但没有解决反转问题

123456 应该是 12 34 56 但结果是 65 43 21

谢谢

您的格式取决于 noSpaced 字符串的长度。所以像这样修复你的 if 条件:

public static void setup(JFXTextField textField) {
textField.setOnKeyReleased(value->{
     String entredText = textField.getText();
     String noSpaced = entredText.replaceAll("\s+","");
     StringBuilder builder = new StringBuilder();
     for (int i = 0; i < noSpaced.length(); i++) {
         builder.append(noSpaced.charAt(i));
         if ((i % 2 == 0 && noSpaced.length() % 2 == 1) || (i % 2 == 1 && noSpaced.length() % 2 == 0)) {
             builder.append(" ");
         }
     }
     textField.setText(builder.toString());
  });

}

可能的解决方案已经回答here

对于你的情况,我建议使用 MaskField