【发布时间】:2017-02-10 01:05:53
【问题描述】:
目前正在处理一个文本字段,如果你输入你的号码,它会更新它:
1##-###-####
12#-###-####
不幸的是,通过控制台将输入“1234”转换为“123-4##-####”是可行的,尽管当我推送更新的字符串“123-4##-#### " 它会自动将光标部分替换到开头,它将不断替换第一个数字。更新文本框中的字符串时,有人可以帮助保存光标位置吗?这是我的更新代码。
phoneField.textProperty().addListener((observable, oldValue, newValue) -> {
Pattern p = Pattern.compile("-?\\d+");
Matcher m = p.matcher(newValue);
String result = "";
String finalString = "";
try {
while (m.find()) {
result = m.group();
}
int size = result.length();
for(int i = 0; i < size; i++) {
if(i == 3 || i == 6) finalString += "-";
finalString += result.charAt(i);
}
for(int i = size; i < 10; i++) {
if(i == 3 || i == 6) finalString += "-";
finalString += "#";
}
} catch (Exception e) {
finalString = "INVALID NUMBER";
}
phoneField.setText(finalString);
});
【问题讨论】:
-
也许
phoneField. positionCaret(newValue.length())? -
不幸的是,这只是将我的插入符号设置到文本的末尾
-
@Nom 嘿,你试过我的解决方案了吗?
标签: java javafx javafx-2 javafx-8