IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

[JFormattedTextField] limiter la saisie


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Par défaut [JFormattedTextField] limiter la saisie
    à vous!

    Voila j'utilise des jformattedTextField pour effecteur des filtre de ma bdd
    en gros mes champs ds ma bdd sot limité à 50 caractère donc pour éviter les bug je voulias limiter directement la saisie au niveau de l'utilisateur

    j'ai donc utiliser des jformattedTextfield avec un MaskFormatter pour limiter la saisie
    dans ma classe Util j'ai mis le mask que j'utilise plusieurs fois ds mon appli:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     public static String MASK1 = "**************************************************";
    ensuite dans mon init de ma jdialog j'ai:
    public MaskFormatter mask = null;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      //JTextField
      public JTextField jTextFieldNom = null;
     
        try {
          mask = new MaskFormatter(Util.MASK1);
          jTextFieldNom = new JFormattedTextField(mask);
        }
        catch (ParseException ex) {
        }
    et ensuite dans mon bouton de validation j'ai le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    String nom = jDialogUtilisateur.jTextFieldNom.getText();
          if (nom.equals("") ){
            JOptionPane.showMessageDialog(null, Erreur.ERREUR_CHAMP_VIDE, "Erreur", JOptionPane.ERROR_MESSAGE);
          }
          else {
                  //traitement de mon info, intégration ds la bdd
          }
    mon problème c'est que mon mask ne semble pas bon
    il ne rentre jamais dans mon cas nom="" même si je ne met rien (comme si par dégfault il y a le mask donc il y a quelque chose....)

    moi je voudrais que mon mask agisse comme une saisie MAXIMUM et non une saisie obligatoire...
    Comment faire? dois je utiliser autre chose que les mask?

    d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 28
    Par défaut
    bonjour,

    javax.swing.InputVerifier devrait faire l'affaire ! non ?

    Cordialement

  3. #3
    Membre chevronné Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Par défaut
    non car je ne souhaite pas comparer le valeur a la perte du focus mais directement à l'écriture dans le jtextfield....
    et les inputVerifier ne font que de la comparaison avec des chaine de caratères passées en paramètre... or l'utilisateur dois pouvoir écrire ce qu'il veux... juste ce qu'il veux limité à 50 caractères

  4. #4
    iuz
    iuz est déconnecté
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 114
    Par défaut
    Personnellement j'utilise un JTextField dont je change le document par celui-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    public class PlainDocumentMajuscule extends PlainDocument {
      private int tailleMax = -1;
     
      public PlainDocumentMajuscule() {
        this(-1);
      }
     
      public PlainDocumentMajuscule(int tailleMax) {
        this.tailleMax = tailleMax;
      }
     
      public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
        // * On taille la chaine à insérer si besoin est *
        if (tailleMax > -1 && this.getLength() == tailleMax)
          return;
        if (tailleMax > -1 && (str.length() + this.getLength()) > tailleMax) {
          str = str.substring(0, tailleMax - this.getLength());
        }
     
        // * On insère la chaine *
        super.insertString(offs, str, a);
      }
    }

  5. #5
    Membre chevronné Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Par défaut
    c'est le même problème ca ne va faire un filtre qu'a la perte de focus...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 28
    Par défaut
    ->anitshka:

    je m'intéroge:
    1- les inputVerifier te permette de définir la règle de validité que tu veux (y compris celle que tu évoques) mais effectivement à la perte de focus seulement.

    2- En revanche celle de iuz convient parfaitement. Le filtre s'effectue à la saisie, en "direct".

    Que veux tu de plus ?

  7. #7
    Membre chevronné Avatar de anitshka
    Inscrit en
    Mai 2004
    Messages
    624
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 624
    Par défaut
    j'aurai voulu ne pas a avoir a redéfinir (encore!) une nouvelle classe a mon appli uniquement pour des raison de gestion de bug...
    je pensais avoir réussit avec les jFormattedtTextfield mais ca a louper...
    c'est etrange quand même qu'au développeur Sun n'est pensé qu'un swing à limitation du nombre de caractère d'entree pourrais etre utilise à la communauté

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] Limiter la saisie dans une table
    Par dolphi dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 16/09/2005, 11h43
  2. [JFormattedTextField] Masque de saisie d'heure
    Par alain57 dans le forum Composants
    Réponses: 8
    Dernier message: 10/08/2005, 11h39
  3. Limiter la saisie dans un élément texte
    Par manou.K dans le forum Oracle
    Réponses: 2
    Dernier message: 28/07/2005, 11h41
  4. [JFormattedTextField] limitation limitée
    Par n00bi dans le forum Composants
    Réponses: 3
    Dernier message: 13/06/2005, 12h07
  5. limiter la saisie dans un edit à des réels!!!
    Par shout dans le forum Windows
    Réponses: 10
    Dernier message: 21/06/2004, 16h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo