для моей программы я хочу использовать TextField, где пользователь может ввести почтовый индекс (немецкий).Для этого я попробовал то, что вы можете увидеть ниже.Если пользователь вводит более 5 цифр, каждая дополнительная цифра должна быть немедленно удалена.Конечно, буквы не допускаются.
Когда я использую этот шаблон ^ [0-9] {0,5} $ на https://regex101.com/, он делает то, что хотел, но когда я пытаюсь это сделать вJavaFX это не работает.Но я пока не смог найти решение.
Может кто-нибудь сказать мне, что я сделал не так?
Редактировать: Для людей, которые еще не работали с JavaFX: когда пользователь вводит толькоодин символ, вызывается метод check (String text).Таким образом, результат также должен быть истинным, когда есть от 1 до 5 цифр.Но не более; -)
public class NumberTextField extends TextField{
ErrorLabel label;
NumberTextField(String text, ErrorLabel label){
setText(text);
setFont(Font.font("Calibri", 17));
setMinHeight(35);
setMinWidth(200);
setMaxWidth(200);
this.label = label;
}
NumberTextField(){}
@Override
public void replaceText(int start, int end, String text){
if(check(text)) {
super.replaceText(start, end, text);
}
}
@Override
public void replaceSelection(String text){
if(check(text)){
super.replaceSelection(text);
}
}
private boolean check(String text){
if(text.matches("^[0-9]{0,5}$")){
label.setText("Success");
label.setBlack();
return true;
} else{
return false;
}
}