Не получается вводить цифры в приложении на основе JavaFX

Не получается вводить цифры в приложение на основе JavaFX. Кто-нибудь может помочь разобраться?

package sudoku.userinterface;

import javafx.scene.control.TextField;

public class SudokuTextField extends TextField{
    private final int x;
    private final int y;

    public SudokuTextField(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    @Override
    public void replaceText(int i, int i1, String s){
        if (!s.matches("[0-9]")) {
            super.replaceText(i, i1, s);
        }
    }

    @Override
    public void replaceSelection (String s){
        if (!s.matches("[0-9]")){
            super.replaceSelection(s);
        }
    }
}

Вот весь код: https://github.com/shodmon/JavaDesktopSudokuDemo

Sudoku


Ответы (1 шт):

Автор решения: Дмитрий Алексеенко

В классе SudokyTextField необходимо изменить регулярное выражение

БЫЛО

@Override
public void replaceText(int i, int i1, String s){
    if (!s.matches("[0-9]")) {
        super.replaceText(i, i1, s);
    }
}

@Override
public void replaceSelection (String s){
    if (!s.matches("[0-9]")){
        super.replaceSelection(s);
    }
}

СТАЛО

@Override
public void replaceText(int i, int i1, String s){
    if (!s.matches("[^0-9]")) {
        super.replaceText(i, i1, s);
    }
}

@Override
public void replaceSelection (String s){
    if (!s.matches("[^0-9]")){
        super.replaceSelection(s);
    }
}

Когда используется [0-9] удаляется все числа

→ Ссылка