如何在 jtextbox 上实时验证正则表达式?

How to validate Regular Expression in real time on jtextbox?

我正在尝试 validate/filter 我的 jtextbox 使用此正则表达式:

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

我想用一个名字过滤两个名字 space。

尝试使用 keytypedkeyreleased,但它不起作用(不让我在文本框上写任何东西)并且 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,但找不到任何示例或实际如何实现并使其工作。

KeylListenerDocumentListener 都不行。在大多数此类情况下,您需要使用 DocumentFilter. Before you do though, take a look on how to use formatted textfields. It might be enough for you. If it does not, this 就是您要查找的内容。