如何验证jtextfield到特定格式?

时间:2016-04-19 12:30:44

标签: java swing validation jtextfield

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

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);
    }        
}

1 个答案:

答案 0 :(得分:0)

使用JFormattedTextField结合MaskFormatter来限制输入开头。

这样的事情:

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);