Comment je fixe le format et la taille d'un champs

Résolu
naziha.alger Messages postés 5 Statut Membre -  
Twinuts Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   -
java swing
salut : j'ai entraîne de faire un champs dans jTextField sous la forme suivantes
exemple : IM100021
LES 2 premiers sont des lettre en majuscule et le reste sont des chiffres
j'ai essayer d'utiliser le formatter mais ça marche pas , méme j'ai utiliser expression réguliere mais j'arrive pas a fixer la taille et le format de champs
svp aidez moi de trouver une solution ?

2 réponses

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Tu peux ajouter un KeyListener à ton composant, à chaque fois que tu appuies sur une touche du clavier tu rentres dans la méthode, tu peux donc vérifier le texte entré au fur et à mesure et imposer un format et une action à effectuer dès que le format n'est plus valide...
    0
    1. naziha.alger Messages postés 5 Statut Membre
       
      est ce que tu peux m'expliquer mieux ?
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      Tu trouveras plus d'infos sur la documentation officielle :
      https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html

      Voici un exemple très simple, tu peux bien sûr l'améliorer autant que nécessaire...

      import java.awt.Color;
      import java.awt.event.KeyEvent;
      import java.awt.event.KeyListener;
       
      import javax.swing.JFrame;
      import javax.swing.JTextField;
       
      public class Test
      {    
          public static void main(String args[])
          {  
              final JTextField txt = new JTextField();
              
              txt.addKeyListener(new KeyListener()
              {
                  public void keyReleased(KeyEvent e) 
                  {
                      if (txt.getText().matches("^[A-Z]{2}[0-9]+$"))
                          txt.setForeground(Color.BLACK);
                      else
                          txt.setForeground(Color.RED);
                  }
                  
                  public void keyTyped(KeyEvent e) {}
                  public void keyPressed(KeyEvent e)  {}
              });
              
              JFrame frame = new JFrame();
              frame.add(txt);
              frame.pack();
              frame.setLocationRelativeTo(null);
              frame.setVisible(true);
              frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          }
      }
      0
    3. naziha.alger Messages postés 5 Statut Membre
       
      merci bcp
      0
  2. Twinuts Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   2
     
    Salut,

    Sinon au plus simple et si tu peux changer ton JTextField par un JFormattedTextField

    MaskFormatter formatter = new MaskFormatter("UU######");
    formatter.setValidCharacters("IM0123456789");
    final JFormattedTextField txt = new JFormattedTextField(formatter);
    ....
    


    0