【问题标题】:How to make text area within JavaFX to be accepting only text input, no numbers?如何使 JavaFX 中的文本区域只接受文本输入,不接受数字?
【发布时间】:2018-04-01 14:20:35
【问题描述】:

我想知道是否可以让 JavaFX 中的文本区域只接受文本格式,不接受数字 - 在最坏的情况下,至少在此文本区域内输入数字时告诉用户这是被禁止的。

【问题讨论】:

标签: java javafx


【解决方案1】:

解决方案: 很简单,用这个方法检查文本区域内的文本:

 if (!Pattern.matches("[a-zA-Z]+", userInputText.getText())){
            System.out.println("wrong input");
        }

我亲自添加了这个 onHandleKeyReleased 动作事件:

@FXML
public void handleKeyReleased() {
    String text = userInputText.getText();
    boolean disableButtons = text.isEmpty() || text.trim().isEmpty() || (!Pattern.matches("[a-zA-Z]+", userInputText.getText())) ;
    okButton.setDisable(disableButtons);
}

所以当用户在文本字段中输入任何数字后,确认他的操作的按钮将被禁用,所以它看起来像这样:

correct input

incorrect input

这应该适用于 JavaFx 中的输入 UI 元素。

【讨论】:

  • no ... 问题:a) 没有在 c&p 中捕获不正确的输入 b) 该模式在其他语言环境中不起作用(拒绝的字符多于允许的字符)要修复前者,请使用 TextFormatter,修复后者使用格式
【解决方案2】:

号码:What is the recommended way to make a numeric TextField in JavaFX?

尝试反转它(接近匹配!)

textField.textProperty().addListener(new ChangeListener<String>() {
    @Override
    public void changed(ObservableValue<? extends String> observable, String oldValue, 
        String newValue) {
        if (!newValue.matches("\\d*")) {
            textField.setText(newValue.replaceAll("[^\\d]", ""));
        }
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-28
    • 1970-01-01
    • 2011-06-15
    相关资源
    最近更新 更多