有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

粘贴后,java JTextField密钥侦听器落后

我试图检查JTextField中的文本是否与特定模式匹配,如果它显示/不显示消息,则通知用户。这就是我目前的情况:

 public class input extends KeyListener{
// Some code here
final JTextField inputField = new JTextField(35);
// Some more code...
   public void generate(){
      // Some GUI code here...
     inputField.addKeyListener(this);
   }
   public void keyPressed(KeyEvent e) {}
   public void keyReleased(KeyEvent e) {}
   public void keyTyped(KeyEvent e) {
      if(e.getSource() instanceof JTextField && e.getSource().equals(inputField)){
         if(Pattern.matches("../../....", (JTextComponent) e.getSource()).getText())))
             System.out.println("Yh, it works");
         else System.out.println("EPIC FAIL (LOL)");
     }
   }
}

实际上,它几乎完美地工作。但是,如果我使用CTRL+V粘贴某个内容,我必须再键入两个字符(而不是一个),然后KeyListener才能注册该字符串是不同的!有人知道为什么吗

如果我漏掉了任何细节,我很抱歉——我已经尽力使这篇文章尽可能简短;所以请不要犹豫问任何问题


共 (1) 个答案

  1. # 1 楼答案

    首先,不要使用KeyListener来解决这类问题,因为它注定会失败,即使你让它工作起来,也充其量只是一个难题。相反,如果我想在用户完全输入信息后进行检查,我会使用ActionListener;如果我想在用户输入时检查输入,但不会阻止输入或更改显示的文本,我会使用DocumentListener,或者一个文档过滤器,如果我要在用户输入时检查输入,并阻止它,或者在不合适的情况下更改它