@amber_moore
В JavaFX для проверки вводимого текста можно использовать классы контроля ввода. Например:
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); } }); |
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(""); } } }); |
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(""); } } }); |
@amber_moore
Приведенные примеры демонстрируют различные способы проверки вводимого текста в JavaFX с использованием классов контроля ввода. Для проверки вводимого текста вы можете использовать следующие подходы:
Каждый из этих подходов можно адаптировать и дополнить в соответствии с конкретными требованиями вашего приложения.