Метод event.consume () не работает в javafx - PullRequest
0 голосов
/ 13 сентября 2018

Ниже приведен мой код. Но когда я вставляю числа, текстовое поле все равно отображается. почему это?

    supMobileText1.setOnKeyPressed(new EventHandler<KeyEvent>(){

        @Override
        public void handle(KeyEvent event) {
            if(event.getCode().isDigitKey()) {
                event.consume();
                System.out.println("Number Type");
            }

        }

    });

1 Ответ

0 голосов
/ 14 сентября 2018

Это позволяет только ввод букв

public class Main extends Application {

    public static void main(String[] args) { launch(args); }

    @Override
    public void start(Stage primaryStage) {
        TextField textField = new TextField();

        Pattern pattern = Pattern.compile("[a-zA-Z]*");
        UnaryOperator<TextFormatter.Change> filter = c -> {
            if (pattern.matcher(c.getControlNewText()).matches()) {
                return c ;
            } else {
                return null ;
            }
        };
        TextFormatter<String> formatter = new TextFormatter<>(filter);
        textField.setTextFormatter(formatter);

        Scene scene = new Scene(textField);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...