Vérifier le texte d'un jtextfield avec une regex

Description

Cette source permet de vérifier le texte contenu dans un champs texte à l'aide d'une expression régulière. Dans tous les cas, un message est affiché indiquant les éventuelles erreurs. S'il n'y a pas d'erreur alors le bouton qui permet de valider les informations est déverrouillé.

Source / Exemple :


package fr.julien.controlechamps;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**

  • <b>ZoneSaisie est la classe qui définit une zone dans laquelle se trouvent plusieurs champs de saisie</b>
  • <p>
  • Cette classe est caractérisée par les informations suivantes :
  • <ul>
  • <li>Une liste de controleurs de champs</li>
  • <li>Un panel ou se situent les champs textes</li>
  • <li>Une barre d'information</li>
  • <li>Un bouton qui sera accessible lorsque tous les champs seront validés</li>
  • </ul>
  • </p>
  • <p>
  • De plus, cette classe permet de lancer la vérification des tous les champs textes qu'elle contient
  • et d'ajouter un champ texte précédé d'un label.
  • </p>
  • @author Julien
  • @version 1.0
*
  • /
public class ZoneSaisie extends JPanel { /**
  • L'identifiant de serialisation
  • /
private static final long serialVersionUID = -5976614727392687952L; /**
  • La liste des controleurs de la page
  • /
private List<Controleur> controleurs; /**
  • Le panel dans leque se trouvent les champs texte
  • /
private JPanel panelCentre; /**
  • La barre d'information
  • /
private Information info; /**
  • Le bouton d'action à déverouiller quand les champs seront valides
  • /
private JButton boutonAction; /**
  • <b>Constructeur de ZoneSaisie</b>
  • @param boutonAction
  • Le bouton à activer lorsque les champs seront valides
  • /
public ZoneSaisie(JButton boutonAction) { this.boutonAction=boutonAction; boutonAction.setEnabled(false); controleurs = new ArrayList<Controleur>(); info = new Information("", EtatPanelInfo.NEUTRE); setLayout(new GridBagLayout()); JButton valider = new JButton("Vérifier"); valider.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { verifier(); } }); GridLayout layout = new GridLayout(0, 2); layout.setHgap(30); layout.setVgap(10); panelCentre = new JPanel(layout); GridBagConstraints c = new GridBagConstraints(); c.insets = new Insets(10, 10, 10, 10); c.fill = GridBagConstraints.HORIZONTAL; c.weightx=2; c.gridwidth=2; c.gridx=0; c.gridy=0; add(info, c); c.gridx=0; c.gridy=1; add(panelCentre, c); c.gridwidth=1; c.gridx=0; c.gridy=2; add(valider, c); c.gridx=1; c.gridy=2; add(boutonAction, c); } /**
  • Cette procédure permet d'ajouter un champ texte
  • @param libelle
  • Le libellé qui précédera le champ texte
  • @param regexControle
  • Le motif qui permettra de controler le texte saisi
  • /
public void ajouterChamp(String libelle, String regexControle){ panelCentre.add(new JLabel(libelle)); JTextField text = new JTextField(); panelCentre.add(text); controleurs.add(new Controleur(text, regexControle)); panelCentre.validate(); panelCentre.repaint(); } /**
  • Procédure qui permet de vérifier tous les contenus des champs textes.
  • La barre d'information sera modifiée et le bouton d'action accessible si
  • tous les champs texte sont valides
  • /
public void verifier(){ int nbErreurs=0; StringBuilder sb = new StringBuilder(); for(Controleur c : controleurs){ if(!c.isTexteValide()){ nbErreurs++; sb.append(" - \"").append(c.getChampTexte().getText()).append("\" n'est pas valide\n"); } } if(nbErreurs==0){ info.setEtat(EtatPanelInfo.VALIDE); info.setText("Les données sont correctes\n"); boutonAction.setEnabled(true); } else{ info.setEtat(EtatPanelInfo.ERREUR); info.setText(nbErreurs+" erreur(s) lors de la saisie : \n"+sb.toString()); } info.repaint(); } }

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.