2016-04-19 9 views
1

Ich muss ein JTextField validieren, indem ich dem Benutzer erlaube, nur cnic-Nummer gemäß diesem Format 12345-1234567-1 einzugeben, ich benutze diesen regulären Ausdruck, aber es funktioniert nicht. dies ist meine FunktionWie validiere ich ein jtextfield zu einem bestimmten Format?

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

Antwort

0

Verwenden Sie ein JFormattedTextField mit einem MaskFormatter kombiniert, um den Eingang zu beschränken zu beginnen.

Etwas wie folgt aus:

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

danke, es funktioniert :) –

Verwandte Themen