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

GWT et Vaadin Java Discussion :

Listener avec un TexField


Sujet :

GWT et Vaadin Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Par défaut Listener avec un TexField
    Bonjour tout le monde.Je souhaiterais ajouter un listerner à mon textfield et quand je clic sur entrée ou que je fait tabulation une combobox se rempli en utilisant la valeur rentrer.

    voici ce que je fait mais ça ne marche pas.Et j'essaie de faire la même chose mais un peux différent que l'exemple suivant:http://www.gwt-ext.com/demo/#linkedComboBox
    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     TextField codepostal = new TextField("Zip code", "zipcode", 160);
    		                  codepostal.addListener( new TextFieldListenerAdapter(){
     
    		                	  public void onChange(TextField f,String valold,String valnow){
    		                		  cityCB.setValue("");
     
     
    		                		  remplirCities(f.getText(),countryCB.getValue());
     
    		                	  }
    		                  });
    cityCB est mon combobox et j'ai coder une fonction à part qui attend un code de pays et un code postal.Je l'ai testé et ça fonctionne bien.
    Mais la quand j'exécute mon code j'ai pas de message d'erreur ni rien.Je ne sais pas si ce que j'essaie de faire est faisable.
    Merçi pour vos suggestions

  2. #2
    Membre éprouvé Avatar de Caroline76
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 94
    Par défaut
    Attention avec "OnChange()", qui n'est appelle que lorsque le widget perd son focus je crois.
    Si tu veux detecter l'appui sur [enter], utilises plutot un "OnKeyPressed()" ou un truc comme ca.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Par défaut
    mais j'ai mis onfocus ,onSpecilKey....Mais ça ne marche pas.La j'ai essayé un truc simple je crée une zone texte et j'ajoute un listerner .Et j'appel window alerte.Un truc comme ça:

    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
     TextField a = new TextField("TErtze");
    	        a.addListener(new TextFieldListenerAdapter() {
        			public  void onFocus(TextField f, String old, String newv) {
        				rootPanel.add(new Label("AHHHHHHHHHHH"));
        				Window w = new Window("kek");
        				w.show();
     
        			}
        			public void onFocus(TextField f, String old, String newv) {
        				rootPanel.add(new Label("AHHHHHHHHHHH"));
        				Window w = new Window("kek");
        				w.show();
     
        			}
    	        }
    	        );

    La j'ai mis onFocus mais j'ai testé avec onChange,onSpecialKey ect...mais pareille.

  4. #4
    Membre éprouvé Avatar de Caroline76
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 94
    Par défaut
    Ce n'est pas une question de OnFocus.
    OnChange est seulement appelle quand ta textbox perd le focus et a change de contenu.
    Essayes avec 2 Textbox (cliquer sur la textbox non active provoque une perte de focus sur la textbox active).

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Par défaut
    Merçi pour ta réponse,mais il doit yavoir un autre truc pour ajouter un écouteur à une zone text.Car comme je t'ai montré j'ai créé un nouveau projet où j'essayes de voir si quand je provoque un évenement qualque chose ce passe à l'aide de mon Window alert où j'écrit un message juste pour voir si ma fonction est sollicitée.Mais au retour je n'ai aucun popup de déclencher ce qui veux dire que la fonction qui gère l'évenement n'a pas été appelé.Je ne vois pas pour le moment pourquoi cela ne fonctionne pas car c'est exactement ce que j'ai fait avec deux combobox.Ya que les méthodes qui ont changé.
    Pour le moment je bloque.
    Merçi

  6. #6
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Tu fais du GWT de base ou tu utilises une autre librairie ?
    car si je ne me trompe pas, en GWT, une zone de texte, c'est com.google.gwt.user.client.ui.TextBox et pas TextField.

    http://google-web-toolkit.googlecode...1.4/index.html


    Avec GWT-Ext, utilises addKeyListener(int keyCode, KeyListener listener)

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Par défaut
    slut benwit j'utilise gwt-ext .J'ai essayé ce que tu m'as dit mais ça ne fonctionnement.Du moins c'est peut être du au fait que je l'ai mal utilisé.Voila le programme que j'ai essayé de tester :

    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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    package gwt.client;
     
    import com.google.gwt.core.client.EntryPoint;
     
    import com.google.gwt.user.client.ui.RootPanel;
    import com.gwtext.client.core.EventObject;
    import com.gwtext.client.widgets.Container;
    import com.gwtext.client.widgets.Panel;
    import com.gwtext.client.widgets.Window;
    import com.gwtext.client.widgets.event.KeyListener;
    import com.gwtext.client.widgets.form.FieldSet;
    import com.gwtext.client.widgets.form.FormPanel;
    import com.gwtext.client.widgets.form.TextField;
     
    public class TestPartiel implements EntryPoint {
     
    	public void onModuleLoad() {
    		// TODO Auto-generated method stub 
     
    		Panel panel = new Panel();  
            panel.setBorder(false);  
            panel.setPaddings(15);  
     
     
            FormPanel form = new FormPanel();
     
            form.setFrame(true);  
            form.setBorder(true);  
            form.setTitle("Formulaire client");  
            form.setWidth(550);  
            form.setLabelWidth(100);  
            form.setUrl("save-form.php");  
     
    		TextField codepostal = new TextField("Zip code", "zipcode", 160);
     
     
     
    		         //create first collapsible fieldset with checkbox  
    		         FieldSet userFS = new FieldSet();  
    		         userFS.setCheckboxToggle(true);  
    		         userFS.setFrame(true);  
    		         userFS.setTitle("User Information");  
    		         userFS.setCollapsed(true);  
    		userFS.add(codepostal); 
     
    		 codepostal.addKeyListener(codepostal.getText(), new KeyListener(){
     
            	 public void onKey(int key,
            	           EventObject e)
            	 	{
            		 Window w = new Window("aaaaaaaaaaaaaaaaa");
            		  w.show();
            	 	}
     
     
              });
     
    		form.add(userFS);
    		panel.add(form);
    		 RootPanel.get().add(panel);
    	}
     
    }
    Si quelqu'un voit où se situe mon erreur.
    Merçi

  8. #8
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Par défaut
    Ce qui ne fonctionne pas dans ton code, c'est ce que tu passes au listener.

    Premièrement, au moment où tu le fais, codepostal.getText() te renvoit que dalle puisque tu la crée juste au dessus sans mettre de valeur.
    Deuxièmement, même si tu avais mis une valeur initiale, par exemple codepostal.setText("a"), ce qui aurai eu pour effet de faire codepostal.addKeyListener("a", ...), là encore, pas sûr que ça marche (j'ai un doute puisqu'il y a une méthode qui prend une chaine pour keycode) car pour écouter et réagir à la saisie d'un "a" dans ta box, il faut mettre le code de la touche a, le keycode de "a".
    Qu'est ce que le keycode ? J'aurai tendance à penser que c'est commun d'un langage à l'autre puisque c'est le code de la touche clavier mais je n'en suis pas certain à 100%. A l'instinct, je dirais que c'est un keycode pour javascript car c'est le langage utilisé in fine. C'est donc probablement de l'ASCII. Je t'ai cherché une table de correspondance : http://www.cambiaresearch.com/c4/702...Key-Codes.aspx
    Donc, si tu voulais écouter le "a", tu écouterais le code 65.

    Pour en revenir à ton cas, ce qui t'intéresse si j'ai bien compris, c'est d'écouter la touche enter (keycode 13)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    codepostal.addKeyListener(13, new KeyListener(){
     
    public void onKey(int key, EventObject e)
    {
    Window w = new Window(codepostal.getText());
    w.show();
    }

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Par défaut
    Tu as parfaitement raison ,j'ai regardé la fonction addkeylistener qui attendait en paramètre un string et un listener.Et pour moi le string c'est ce qui est entrée dans la zone text.
    Mais j'avais tout faux .Merçi pour ton aide et pour la table des correspondances car avec ça je peux passer à mon addkeyListener un tableau d'entier pour par exemple recupérer mon text au cas où on fait entrer ou tab...
    Et la ça marche bien.
    Merçi

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 104
    Par défaut
    slt ,je reviens sur mon problème .Au départ je suis parti sur ce code la qui marchait pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    TextField codepostal = new TextField("Zip code", "zipcode", 160);
    codepostal.addListener( new TextFieldListenerAdapter(){
     
    public void onChange(TextField f,String valold,String valnow){
    cityCB.setValue("");
     
     
    remplirCities(f.getText(),countryCB.getValue());
     
    }
    });
    J'avais eu une solution avec les tables de correspondance mais qui atteignaient ses limites car on doit spécifier toutes les actions possible pour provoquer détecter le changement.Ce qui me posais un petit problème.
    Le fait que onchange ne marchait pas était seulement du à une boulette de ma part c'est à dire à la place de TextField f c'est Field voila.Je tenais à le mettre pour des gens qui auriez le même problème

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Par défaut toujours dans le meme style
    Bonjour,
    j'aurai un ptit souci, j'aimerai faire que lorsqu'on keyUp dans un Textfield ca remette en forme ce même textfield, par exemple pour mettre un numéro de telephone en forme au fur et a mesure de la saisie clavier.

    genre on tape "03" et une action fait qu'un espace " " s'intercale ensuite ...etc tous les 2 chiffres.
    Parce que ca a l'air de fonctionner avec un field.addListener(new TextFieldListenerAdapter(){ sur la methode onChange, meme onBlur et autre mais je ne veux pas que ca se fasse a la perte du focus mais instantanement.

    J'avais essayé avec un keyListener mais ca ne marchait pas correctement. Peut-etre que je m'y prenais mal.

    Si quelqu'un a une idée...

    merci

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Par défaut probleme resolu tout seul!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    		telF.setRegexText("Ce champ doit etre de la forme \"03 88 79...\" et les espaces sont insérés automatiquement.");
    		telF.setRegex("^[0-9]{2} [0-9]{2} [0-9]{2} [0-9]{2} [0-9]{2}$");
    		telF.addKeyPressListener(new EventCallback() {
     
    			public void execute(EventObject e) {
     
    				String texte = telF.getText();
    				telF.setValue(formaterTelFax(telF.getText(),10));
    			}
    		});

    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
    	/**
             * Permet d'inserer des espaces entre 2 caracteres consecutifs de la valeur du textfield au fur et a mesure que
             * l'utilisateur les insere. Si maxlength = 0 alors la longueur est infinie.
             * 
             * @param chaine
             *            correspond a la chaine a formater
             * @param maxlength
             *            correspond a la longueur max du champ de type field
             * @return la chaine formaté
             */
    	private String formaterTelFax(String chaine, int maxlength) {
    		String newVal_ = ((String) chaine).replaceAll(" ", "");
     
    		String champModifie = "";
    		boolean fin = false;
     
    		if (newVal_.length() >= 2) {
    			for (int i = 0; i < newVal_.length() && (maxlength != 0 && maxlength > newVal_.length()); i = i + 2) {
     
    				if (newVal_.length() == (i + 1)) {
    					champModifie += newVal_.substring(i, i + 1);
    				} else {
    					champModifie += newVal_.substring(i, i + 2) + " ";
    				}
    			}
    			if( maxlength != 0 && maxlength == newVal_.length()){
    				champModifie = chaine.substring(0, chaine.length()-1);
    			}
    		} else {
    			champModifie = newVal_;
    		}
    		return champModifie;
    	}

    Bon c'est peut etre pas super propre et super optimisé mais bon en tout cas ca marche et ca peut depanner!

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

Discussions similaires

  1. [Integration] Problème Spring JMS listener avec MQ Series
    Par ep31 dans le forum Spring
    Réponses: 0
    Dernier message: 30/05/2012, 17h54
  2. Réponses: 18
    Dernier message: 12/10/2011, 20h27
  3. Création d'un listener avec PowerBuilder
    Par cannavaro dans le forum Powerbuilder
    Réponses: 0
    Dernier message: 06/02/2008, 13h32
  4. Réponses: 2
    Dernier message: 26/10/2006, 11h13
  5. Alerte "Pb : Listen" (avec Alexandrie)
    Par Loulipo dans le forum 4D
    Réponses: 10
    Dernier message: 07/06/2006, 12h34

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