JavaFX TextField文本验证

时间:2018-04-19 09:55:59

标签: java javafx event-handling keyevent

我的listener已应用于我的字段:

nameTextField.addEventHandler(KeyEvent.KEY_TYPED, fieldChangeListener(50));

事件处理程序:

private EventHandler<KeyEvent> fieldChangeListener(final Integer max_Lengh) {
        return new EventHandler<KeyEvent>() {
            @Override
            public void handle(KeyEvent event) {
                TextField field = (TextField) event.getSource();
                String text = field.getText();
                // I need here something like:
                if(KeyEvent.VK_ENTER){
                // do special part for ENTER KEY
                }
            }
         }
}

问题KeyEvent event来自javafx.scene.input.KeyEventKeyEvent.VK_ENTER来自com.sun.glass.events.KeyEvent。我不知道如何判断ENTER键是否触发KEY_TYPED事件。

1 个答案:

答案 0 :(得分:1)

如果您想在文本更改时进行输入验证,可以在textProperty的{​​{1}}上使用监听器:

TextField

要检测何时按下 Enter ,您可以使用textField.textProperty().addListener((observable, oldValue, newValue) -> System.out.println("Input Validation"));

onActionProperty

如果您想阻止用户输入未通过验证逻辑的字符,那么您可以使用textField.setOnAction(event -> System.out.println("Enter pressed: Word Check")); (此textProperty˙仅接受整数,而不是收听TextFormatter。 ):

TextField