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

Résolu/Fermé
naziha.alger Messages postés 5 Date d'inscription vendredi 21 juin 2013 Statut Membre Dernière intervention 24 juin 2013 - 21 juin 2013 à 18:59
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 22 juin 2013 à 11:01
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 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
21 juin 2013 à 19:13
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 vendredi 21 juin 2013 Statut Membre Dernière intervention 24 juin 2013
21 juin 2013 à 20:20
est ce que tu peux m'expliquer mieux ?
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
21 juin 2013 à 20:38
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 vendredi 21 juin 2013 Statut Membre Dernière intervention 24 juin 2013
21 juin 2013 à 22:08
merci bcp
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 2
22 juin 2013 à 11:01
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