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

 Java Discussion :

Position du curseur dans une TextBox


Sujet :

Java

  1. #1
    Membre averti Avatar de Vince
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    369
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 369
    Points : 366
    Points
    366
    Par défaut Position du curseur dans une TextBox
    Bonjour,

    Je travaille sur NetBeans, je souhaite limiter le nombre de caractères saisis dans les textbox, apparemment dans les propriétés on ne peut pas le limiter.
    Alors j'ai codé une petite fonction qui se charge de le faire, le problème est dans la position du curseur qui est mal géré.

    Dés que je tape un caractère le curseur va à la fin de la zone de texte, même si je saisi au milieu de la chaine, du coup mon formulaire devient un peu laborieux à saisir.

    Comment définir la position du curseur dans une textbox ? Quelle propriété de la textbox ?

    Merci d'avance de vos réponses

  2. #2
    Membre éclairé Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Points : 773
    Points
    773
    Par défaut
    salut,

    tu veux dire quoi par textbox?? JTextField??

    sinon il y la méthode setCaretPosition(int position) qui te permet de changer la position du curseur, mais la position ne peut varier qu'entre 0 et la longueur du texte contenu dans la JTextField, donc je crois que ça n'aide pas beaucoup.

    tu pourrais mettre le code qui te permet de limiter la saisie, peut être qu'il y a moyen de l'améliorer

  3. #3
    Membre averti Avatar de Vince
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    369
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 369
    Points : 366
    Points
    366
    Par défaut
    Merci de ta réponse !

    j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    int iPos = this.txtMatchcode.getCaretPosition();
    Lancement méthode limitation des champs    
    this.txtMatchcode.setCaretPosition(iPos);
    J'aimerai savoir s'il est possible d'inclure dans ma fonction le getCaret et set en passant l'object txtbox en cours ? Pour ne pas le copier coller 50 fois

    Merci des réponses

  4. #4
    Rédacteur/Modérateur
    Avatar de regis1512
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Mai 2008
    Messages
    1 264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 264
    Points : 7 999
    Points
    7 999
    Par défaut
    Bonjour,

    Il me semble qu'il y a quelquechose à faire du coté d'un KeyListener.

    Tu rajoutes un KeyListener au JTextField.
    Le KeyListener contrôle la taille du champ.
    Si la taille est au max, on annule l'évènement.

  5. #5
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 711
    Points : 4 792
    Points
    4 792
    Par défaut et le PlainDocument ?
    Le JTextField a en "arrière-plan" un objet PlainDocument dont on peut se servir pour contrôler sans douleur le nombre de caractères saisis par l'utilisateur.

    C'est beaucoup moins "bricolé" que de s'énerver sur le Carret.

    ci-dessous la classe prête à l'emploi que j'utilise :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    import javax.swing.text.AttributeSet;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.PlainDocument;
     
    /**
     * Permet de limiter la longueur du texte d'un JTextField
     * @author Bruno
     */
    public class ContrôleurDeTexte extends PlainDocument {
     
        /**
         * Constructeur par défaut. Si aucune longueur de texte n'est spécifiée alors le texte est limité à 4000 caractères
         */
        public ContrôleurDeTexte() {
            super();
        }
     
        /**
         * Spécification du nombre maximum de caractères de la zone JTextField
         * @param _NbCarMax Nombre maximum de caractères de la zone JTextField
         */
        public void setNbCarMax(int _NbCarMax){
            NbCarMax = _NbCarMax;
        }    
     
        /**
         * Méthode héritée de PlainDocument
         * @param offs Position du curseur (éventuellement...)
         * @param str Chaîne de caractère insérée
         * @param a Inutilisé
         * @throws javax.swing.text.BadLocationException Inutilisé
         */
        @Override
        public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
            int LongueurTotale = (str.length() + this.getLength());
            if (LongueurTotale <= NbCarMax) {
                super.insertString(offs,str,a);
            }
        }
     
        int NbCarMax = 4000;
    }
    après, il suffit de l'ajouter dans le code du JTextField :
    par exemple pour avoir un champ limité à 35 caractères on fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public class MonChampTexte extends JTextField  {
     
        /**
         * Creates a new instance of bChampTexte
         */
        public MonChampTexte () {
            ContrôleurDeTexte Ct = new ContrôleurDeTexte();
            Ct.setNbCarMax(35);
            setDocument(Ct);
        }
    Dans NetBeans, si tu fais un JFrame avec un JTextField nommé jTextField1, tu n'as pas la main sur le constructeur de celui-ci.
    Donc, dans le constructeur du JFrame, après l'instruction initComponents() on fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            initComponents();
            ContrôleurDeTexte Ct = new ContrôleurDeTexte();
            Ct.setNbCarMax(35);
            jTextField1.setDocument(Ct);

  6. #6
    Membre averti Avatar de Vince
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    369
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 369
    Points : 366
    Points
    366
    Par défaut
    Merci de vos réponses, j'ai finalement opté pour la solution de Népomucène qui me semble plus habile !

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

Discussions similaires

  1. [Débutant] Position du curseur dans une textbox sans multiline
    Par jetle dans le forum VB.NET
    Réponses: 4
    Dernier message: 27/06/2011, 23h25
  2. recuperer la position du curseur dans une textbox
    Par bleuerouge dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/10/2007, 10h41
  3. [VB6] position du curseur dans une zone texte et insertion caractere
    Par tim69000 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/05/2006, 09h52
  4. CSS - Couleur du curseur dans une textbox
    Par AurelBUD dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 25/04/2006, 10h46
  5. Obtenir la position du curseur dans une Image
    Par bastoune dans le forum Composants VCL
    Réponses: 6
    Dernier message: 14/11/2003, 21h02

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