我想要一个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");
}
}
}
鸿蒙传说
TA贡献1865条经验 获得超7个赞
好的,我使用 JformattedtextField 解决了上述问题。
MaskFormatter mask = new MaskFormatter ("##?????####?#?# "): JformattedtextField tf = new JformattedtextField (mask);
就是这样.. 不需要 if else
添加回答
举报
0/150
提交
取消