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

Résolu
naziha.alger Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
Twinuts Messages postés 5375 Date d'inscription   Statut Modérateur 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 ?
A voir également:

2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
naziha.alger Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
est ce que tu peux m'expliquer mieux ?
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   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
naziha.alger Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
merci bcp
0
Twinuts Messages postés 5375 Date d'inscription   Statut Modérateur 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