java - 如何验证 jtextfield 仅接受巴基斯坦 cnic 格式?

标签 java swing jframe jtable jtextfield

我需要通过允许用户根据此格式仅输入 cnic 号码来验证 JTextField 12345-1234567-1,我正在使用此正则表达式,但它不起作用。 这是我的功能

private void idSearchKeyPressed(java.awt.event.KeyEvent evt) {
    String cnicValidator = idSearch.getText();

    if (cnicValidator.matches("^[0-9+]{5}-[0-9+]{7}-[0-9]{1}$")) {
        idSearch.setEditable(true);
    }
    else {
        idSearch.setEditable(false);
    }        
}

请为我提供一些如何验证我的 jtextfield 的指导...谢谢

最佳答案

验证后输入的另一种解决方案是使用 JFormattedTextFieldMaskFormatter 结合限制输入。

创建其中之一的代码将类似于:

import java.text.ParseException;

import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.text.MaskFormatter;

public class Demo {

    public static void main(String[] args){

        final JFrame frame = new JFrame("Demo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        final MaskFormatter mask;
        try {
            mask = new MaskFormatter("#####-#######-#");
        } catch (ParseException e) {
            throw new RuntimeException("Invalid format mask specified", e);
        }

        // You can optionally set a placeholder character by doing the following:
        mask.setPlaceholderCharacter('_');
        final JFormattedTextField formattedField = new JFormattedTextField(mask);

        frame.setSize(100, 100);
        frame.add(formattedField);
        frame.setVisible(true);
    }
}

格式掩码#仅接受数字(具体来说,它接受Character.isDigit(char)返回true的任何字符),并且禁止输入任何非数字。

关于java - 如何验证 jtextfield 仅接受巴基斯坦 cnic 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33144909/

相关文章:

java - 如何使用 GridBagLayout 制作单列按钮?

java - 如何像 JOptionPane 那样阻塞主线程?

java - 如何在java中程序继续运行之前等待事件完成

java - Swing 事件线程 Java

java - 允许在 android 的日历中写我的提醒

java - 结合 ListActivity 和 ActionBarActivity

java - 来自 bouncycaSTLe RSAKeyParameters 的公钥

java - 为什么 System.getProperties() 对 -D 定义的属性返回 null?

Java GUI JList 应用程序

java - 在jframe上显示图像