Как проверить регулярное выражение в режиме реального времени на jtextbox? - PullRequest
2 голосов
/ 12 мая 2019

Я пытаюсь проверить / отфильтровать свой jtextbox с этим регулярным выражением:

^(([A-za-z]+[\s]{1}[A-za-z]+)|([A-Za-z]+))$

Я хочу отфильтровать два имени с одним пробелом.

Попытка с использованием keytyped и keyreleased, но он просто не работает (не позволяет мне что-либо писать в текстовом поле), а e.consume() не работает.

boolean StrCheck(String Exp,String str) {
            return Pattern.matches(Exp,str);
            }

    @Override
    public void keyTyped(KeyEvent e) {
        if (e.getSource() == jTextField) {
            String regexp = "^(([A-za-z]+[\s]{1}[A-za-z]+)|([A-Za-z]+))$";
            if (jTextField.getText().length() == 25) {
                e.consume();
            } if (StrCheck(regexp,jTextField.getText())){

            }else {
                e.consume();
            }

Я искал, но единственный возможный ответ, который я получил, - это создать Documentlistene, НО не могу найти ни одного примера или как на самом деле это сделать и заставить его работать.

1 Ответ

3 голосов
/ 12 мая 2019

Ни KeylListener, ни DocumentListener не будут работать.В большинстве случаев такого рода вам нужно будет использовать DocumentFilter. Прежде чем вы это сделаете, посмотрите , как использовать отформатированные текстовые поля. Этого может быть достаточно для вас.Если нет, то ответ - это то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...