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

我想要一个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");

        }

    }

});


翻阅古今
浏览 118回答 2
2回答

UYOU

在您输入 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");    }  }}

鸿蒙传说

好的,我使用 JformattedtextField 解决了上述问题。MaskFormatter mask = new      MaskFormatter ("##?????####?#?# "):                    JformattedtextField tf = new        JformattedtextField (mask);就是这样.. 不需要 if else
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java