为了账号安全,请及时绑定邮箱和手机立即绑定

如何只接受来自 JTextField 的指定模式?

如何只接受来自 JTextField 的指定模式?

翻阅古今 2021-06-14 17:01:12
我想要一个JTextField只接受我指定的模式。“12ABCDE1234A1A1”注意 - 该模式可以包含任何数字和字母。JTextField t17 = new JTextField();final String match ="(\\d\\d)-([a-zA-z]{5})-(\\d\\d\\d\\d)-([a-zA-z]{1})- (\\d)-([a-zA-z]{1})-(\\d)+$";Pattern pt = Pattern.compile(match);final Matcher mt =pt.matcher(t17.getText());t17.addFocusListener(new FocusAdapter() {    @Override    public void focusLost(FocusEvent arg0) {        if(mt.matches()){            lblPin.setText("verified");        }else{            JOptionPane op = new JOptionPane();            op.showMessageDialog(iff, "INVALID GST NUMBER");        }    }});
查看完整描述

2 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

在您输入 tekst 后JTextField,根据此模式验证它的文本:


^\\d{2}[A-Z]{5}\\d{4}([A-Z]\\d){2}$

并调用t17.getText()insideFocusAdapter方法,因此您将获得当前输入的文本。


您可以在 Java 代码中尝试:


public class JavaFiddle

{

  public static void main(String[] args)

  {

    java.util.regex.Pattern pt = java.util.regex.Pattern.compile("^\\d{2}[A-Z]{5}\\d{4}([A-Z]\\d){2}$");

    java.util.regex.Matcher mt = pt.matcher("12ABCDE1234A1A1");

    if(mt.matches()){

      System.out.println("success");

    }else{

      System.out.println("failuire");

    }

  }

}


查看完整回答
反对 回复 2021-06-23
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

好的,我使用 JformattedtextField 解决了上述问题。

MaskFormatter mask = new      MaskFormatter ("##?????####?#?# "):                    JformattedtextField tf = new        JformattedtextField (mask);

就是这样.. 不需要 if else


查看完整回答
反对 回复 2021-06-23
  • 2 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信