Как запретить ввод символов в textfield java

Аватар пользователя Сергей Якимович
Сергей Якимович
28 января 2023

Для запрета ввода символов можно использовать класс InputVerifier. Он предоставляет метод verify(), который проверяет введенные данные и возвращает true или false, в зависимости от того, прошла ли проверка.

Например нижеприведенный код не позволит перейти ко второму полю, пока в первом будут символы кроме букв алфавита :

import javax.swing.*;
import java.awt.*;
import java.util.regex.Pattern;

public class App {
    public static void main(String[] args) {
        InputVerifier verifier = new InputVerifier() {
            public boolean verify(JComponent input) {
                JTextField textField = (JTextField) input;
                return Pattern.matches("[a-zA-Z]+", textField.getText());
            }
            public boolean shouldYieldFocus(JComponent source, JComponent target) {
                return verify(source);
            }
        };

        JTextField field1 = new JTextField("only a-z and A-Z");
        JTextField field2 = new JTextField();
        field1.setInputVerifier(verifier);

        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(field1, BorderLayout.NORTH);
        frame.getContentPane().add(field2, BorderLayout.SOUTH);
        frame.pack();
        frame.setVisible(true);
    }
}
1 0