InputVerifier窃取焦点

时间:2016-01-08 13:56:52

标签: java swing focus jtextfield inputverifier

我的InputVerifier在我的应用中窃取焦点时遇到问题。当我点击使用此验证器的文本字段时,我无法在其他任何地方点击,除非我用4位数字填充该字段(验证器在这里是为了防止输入数字以外的任何内容,并且必须有4个)

这是我的代码:

public class NumberVerifier extends InputVerifier {

public boolean verify(JComponent input) {
    String text = ((JTextField) input).getText();
        if((text.length()==4) && isNumeric(text)){
            return true;
        }else{
            return false;
        }
}

    public static boolean isNumeric(String str)
    {
      return str.matches("[0-9]+\\.?");
    }

}

有没有办法防止这种情况发生?

1 个答案:

答案 0 :(得分:0)

如果输入与您的正好4个数字相匹配,则您可以简单地接受该输入为有效数字' 如果为空(长度为0)。

public boolean verify(JComponent input) {
    String text = ((JTextField) input).getText();
        // if text is 4 digits or it's empty
        if(((text.length()==4) && isNumeric(text)) || (text.length()==0)){
            return true;
        }else{
            return false;
        }
}