0

嗨,我正在尝试在我的文本字段中添加一个空间格式化功能(我正在使用 JFoenix)我的目标是写10000010 00 0010000001 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());
      });
}

测试我在这里面临的问题是:空间很大,而且文字颠倒了

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

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

谢谢

4

2 回答 2

2

可能的解决方案已在此处得到解答。

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

于 2017-08-13T07:03:40.370 回答
1

您的格式取决于 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());
  });

}

于 2017-08-12T22:04:14.993 回答