@amber_moore
В JavaFX для проверки вводимого текста можно использовать классы контроля ввода. Например:
- TextField - элемент управления для ввода однострочного текста. Можно задать ограничение на длину вводимого текста:
1
2
3
4
5
6
7
8
9
10
|
TextField textField = new TextField();
textField.setPromptText("Введите текст");
// Ограничение на длину вводимого текста
int maxLength = 10;
textField.textProperty().addListener((observable, oldValue, newValue) -> {
if (newValue.length() > maxLength) {
textField.setText(oldValue);
}
});
|
- PasswordField - элемент управления для ввода пароля. Можно задать ограничение на длину и шаблон пароля:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
PasswordField passwordField = new PasswordField();
passwordField.setPromptText("Введите пароль");
// Ограничение на длину пароля
int maxLength = 10;
passwordField.textProperty().addListener((observable, oldValue, newValue) -> {
if (newValue.length() > maxLength) {
passwordField.setText(oldValue);
}
});
// Шаблон пароля
String passwordPattern = "^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\S+$).{8,}$";
passwordField.focusedProperty().addListener((observable, oldValue, newValue) -> {
if (!newValue) {
String password = passwordField.getText();
if (!password.matches(passwordPattern)) {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setTitle("Неверный формат пароля");
alert.setHeaderText(null);
alert.setContentText("Пароль должен быть не менее 8 символов, содержать хотя бы одну цифру, одну строчную и одну заглавную буквы, один специальный символ и не содержать пробелы.");
alert.showAndWait();
passwordField.setText("");
}
}
});
|
- TextArea - элемент управления для ввода многострочного текста. Можно задать ограничение на количество строк:
1
2
3
4
5
6
7
8
9
10
11
12
|
TextArea textArea = new TextArea();
textArea.setPromptText("Введите текст");
// Ограничение на количество строк
int maxLines = 5;
textArea.textProperty().addListener((observable, oldValue, newValue) -> {
int lineCount = textArea.getText().split("
").length;
if (lineCount > maxLines) {
textArea.setText(oldValue);
}
});
|
Также можно использовать регулярные выражения для проверки вводимого текста на соответствие заданному формату. Например:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
TextField textField = new TextField();
textField.setPromptText("Введите число от 0 до 10");
String numberPattern = "\d+";
textField.focusedProperty().addListener((observable, oldValue, newValue) -> {
if (!newValue) {
String number = textField.getText();
if (!number.matches(numberPattern) || Integer.parseInt(number) < 0 || Integer.parseInt(number) > 10) {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setTitle("Неверный формат числа");
alert.setHeaderText(null);
alert.setContentText("Введите число от 0 до 10");
alert.showAndWait();
textField.setText("");
}
}
});
|