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 :

[JTextField] équivalent du TextListener


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Par défaut [JTextField] équivalent du TextListener
    Bonjour,

    quelqu'un pourrait-il me donner l'équivalence de l'utilisation du TextListener (TextField) avec JTextField. Vous me direz que je peux utiliser uniquement le premier mais je trouve le second plus joli d'une part, et d'autre part si j'y arrive avec un je devrais y arriver avec l'autre (ça forge la culture perso de développeur).

    @+ et merci d'avance !!!

  2. #2
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    bonsoir,

    je suppose que ça doit être DocumentListener.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 32
    Par défaut
    Il faut le créer comme ça

    JTextField tf = new JTextField(Document doc, String text, int columns) ;
    doc va tout intercepter , il faut éventuellement le sous-classer.



    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
    44
    45
    46
    47
    48
    49
    package phm.chaine;
     
    import javax.swing.text.*;
     
    public class NumberDocument extends PlainDocument {
      // est-ce qu'on peut rentrer un flotant => '.' sera accepte
      private boolean isFloat;
      // est-ce qu'on peut rentrer un negatif => '-' sera accepte
      private boolean acceptNeg;
     
      public NumberDocument(boolean isFloat, boolean acceptNeg) {
        this.isFloat = isFloat;
        this.acceptNeg = acceptNeg;
      }
     
      public void insertString(int offs, String str, AttributeSet a) throws BadLocationException {
       // System.out.println("NumberDocument");
        if (str == null)
          return;
        char[] first = str.toCharArray();
        StringBuffer buff = new StringBuffer();
        int i = 0;
        if (offs == 0 && acceptNeg && first[0] == '-')
           buff.append(first[i++]);
        for (; i < first.length; i++)
    	    if(Character.isDigit(first[i])||(isFloat && first[i]=='.'))
    	       buff.append(first[i]);
    	super.insertString(offs, buff.toString(), a);
       }
     
       public String getAll() {
       	String ret = "0";
    	   int lg = getLength();
    	   if (lg ==0) {
    	   	return ret;
    		} else {
    			//System.out.println("getLength()="+getLength());
    	   	try {
    	   		ret = getText(0, lg);
    			   //System.out.println("ret="+ret);
    			} catch (BadLocationException be){
    				System.out.println("Err sur getAll pour "+this.toString());
    			} finally {
    				return ret;
    			}
    		}
       }
     
    }
    pm

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Par défaut
    merci beaucoup mais quand je vois ce qu'il faut faire, je pense que je vais conserver les TextField car je n' ai pas de test à faire sur les chaînes, c'est juste si le texte = blanc on désactive le bouton ok. J'arrive à le faire avec le textfield donc je vais conserver celà.

    @+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 32
    Par défaut
    Ou un KeyListener si l'interception d'une simple entrée clavier suffit à controler la situation, et ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public void keyReleased(KeyEvent arg0) {
       if (arg0.getSource().getClass() ==  JTextField.class) {
          if (arg0.getSource() == myJTextField) {
             etc....
    pm

  6. #6
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Plutôt que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arg0.getSource().getClass() ==  JTextField.class
    il est préférable de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arg0.getSource() instanceof JTextField
    qui est moins restrictif.

  7. #7
    Membre éclairé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Mars 2005
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Par défaut
    à quoi ça sert :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arg0.getSource().getClass() ==  JTextField.class
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    arg0.getSource() instanceof JTextField
    je ne vois pas très bien l'utilité d'une de ces 2 lignes car derrière on fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (arg0.getSource() == myJTextField)
    on est donc sûr d'avoir ce que l'on veut, nan?

  8. #8
    Membre Expert Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Par défaut
    Dans ce cas précis, c'est sûr que le 1er test ne sert à rien.

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

Discussions similaires

  1. Équivalent d'un CellEditorListener pour un JTextField
    Par borozhim dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 20/08/2010, 01h35
  2. [JtextField]Creer un masque pour Ip
    Par bibx dans le forum Composants
    Réponses: 8
    Dernier message: 11/01/2005, 17h31
  3. Réponses: 3
    Dernier message: 21/08/2003, 14h47
  4. [postgreSQL] équivalent de la function 'instr'
    Par Dra_Gun dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/01/2003, 16h09
  5. Équivalent du #IFDEF
    Par agh dans le forum Langage
    Réponses: 4
    Dernier message: 14/10/2002, 18h44

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