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

AWT/Swing Java Discussion :

Problème avec JComboBox


Sujet :

AWT/Swing Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 130
    Points
    130
    Par défaut Problème avec JComboBox
    bonjour,

    j'utilise Swing, j'ai un comboBox de type "JComboBox", je veux que lorsque l'utilisateur passe la souri sur ce Combo faire un traitement, j'ai utilisé la fonction "addFocusListener", mais ça pas marché.

    j'ai utilisé la même fonction (addFocusListener) pour des champs de type zone de text et ça marché.

    Il y'a une fonction spécifique pour les comboBox?

    Merci de me donner un exemple de solution, et Merci d'avance.

  2. #2
    Membre habitué Avatar de Jose.N70
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 130
    Points
    130
    Par défaut
    Bonsoir et pourquoi pas un mouselistener un peu dans ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    jComboBox.addMouseListener(new java.awt.event.MouseAdapter() {
    	public void mouseEntered(java.awt.event.MouseEvent e) {
    		// action a son entrée
    	}
    });

  3. #3
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    l'évènement issu d'un FocusListener n'est déclenché que lorsque le composant obtient le focus, soit par un clic de souris sur le composant, soit par un appui sur la touche [TAB] jusqu'à atteindre l'objet.

    En implémentant un MouseListener, vous pouvez détecter le passage de la souris au-dessus du composant, dans la méthode surchargée mouseEntered

    En espérant que cela vous aide...
    @ bientôt...

    Salut & @+ sur 3W!

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 130
    Points
    130
    Par défaut
    c vraiment bizard, ça passe sur le code mais ne fais aucune action.

  5. #5
    Membre habitué Avatar de Jose.N70
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 130
    Points
    130
    Par défaut
    Citation Envoyé par amine1980 Voir le message
    c vraiment bizard, ça passe sur le code mais ne fais aucune action.
    Ca passe sur quel code ? Aucune action ou ?
    Si c'est le FocusListener , tant que le composant n'a pas le focus il ne va rien faire. Comme le dit rtg57 soit tu prends le Focuslistener et là il faut un clic ou une tabulation sur le composant, soit tu prends un mouselistener qui lui va "détecter" la présence de la souris sur le composant ( sans pour autant avoir besoin de cliquer dessus )

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 130
    Points
    130
    Par défaut
    En faîte le problème c'est qu'il fallait mettre la propriété editable en false :

    jComboBox.setEditable(false);
    jComboBox.addFocusListener(VirtualKeyboardListener.getVirtualKeyboardListener());

    Mais le problème ici que le combo Box devient non editable, et moi je dois le rendre editable aprés l'exécution de mon listner .

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 130
    Points
    130
    Par défaut
    En général le jComboBox n'as pas de listner lorsqu'il est editable, vous avez une solution pour ça? je veux que mon combo soit editable et exécute un FocusListner?

    Merci d'avance.

  8. #8
    Membre confirmé Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Points : 631
    Points
    631
    Par défaut
    Bonsoir
    on peut ajouter un FocusListener pour les JTextField et les JComboBox
    je te donne un petit exemple
    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
    JComboBox C=new JComboBox();
    C.addFocusListener( new remplissage());
    add(C);
     
     
    ...
    class remplissage implements FocusListener {
    public void focusGained(FocusEvent e) { // lorsque le composant gagne le focus
    			System.out.println("focus gagné");
     
    		}
     
     
    public void  focusLost(FocusEvent arg0) { 
     System.out.println("focus perdu");
    }
     
    }
    On essaie
    et ça marchera

    Mon site
    Ma page

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 130
    Points
    130
    Par défaut
    Je suis bien d'accord avec toi, mais ça nécessite que le composant JComboBox soit non éditable, (on doit setter l'instruction jComboBox.setEditible(false)).

    Moi je veux associer le listner que tu as montré + pouvoir écrire dans la zone de combo, pas seulement sélectionner un élément de la liste, autrement dit : pouvoir écrire dans ce comboBox comme le textField.

    Par avance Merci.

  10. #10
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonsoir,

    attention, je crois qu'il y a une astuce au niveau d'un JComboBox éditable.
    En effet, je crois qu'il est dans ce cas équipé d'un JTextField ou quelquechose comme cela. Donc peut être que ce n'est pas le JComboBox qui détecte la souris, mais le composant associé pour l'édition.

    C'est pour cela que lorsque vous rendez le JComboBox non éditable, il reçoit les évènement souris. ( Ce n'est qu'une supposition )

    @ bientôt...
    @ bientôt...

    Salut & @+ sur 3W!

  11. #11
    Membre confirmé Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Points : 631
    Points
    631
    Par défaut
    Citation Envoyé par rtg57 Voir le message
    Bonsoir,

    attention, je crois qu'il y a une astuce au niveau d'un JComboBox éditable.
    En effet, je crois qu'il est dans ce cas équipé d'un JTextField ou quelquechose comme cela. Donc peut être que ce n'est pas le JComboBox qui détecte la souris, mais le composant associé pour l'édition.

    C'est pour cela que lorsque vous rendez le JComboBox non éditable, il reçoit les évènement souris. ( Ce n'est qu'une supposition )

    @ bientôt...
    Bonjour rtg57, d'après cette supposition il nous faudra une méthode qui retourne le composant associé, ainsi nous pourrons le gérer ...

    Je suppose que rendre un combo éditable annule automatiquement ses listener... On doit essayer de les redéfinir ...
    On essaie
    et ça marchera

    Mon site
    Ma page

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 130
    Points
    130
    Par défaut
    en effet oui, le rendre editable annule tout ses listner.
    je suis entrain de voir comment pouvons les redefinir.
    Merci.

  13. #13
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    j'ai essayer d'accrocher un MouseListener à la partie "Editeur" du ComboBox...mais je n'y arrive pas.

    Je ne suis pas assez calé en JAVA...désolé

    @ bientôt
    @ bientôt...

    Salut & @+ sur 3W!

  14. #14
    Membre habitué Avatar de Jose.N70
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2009
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2009
    Messages : 162
    Points : 130
    Points
    130
    Par défaut
    Je ne sais pas si j'ai bien compris ce que tu voulais, mais tu veux juste mettre un focusListener sur ton combobox qui doit rester éditable ? si c'est le cas tu peux essayer avec ca.

    En gros il faut que focusListener soit sur le composant éditeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ...
    jComboBox.setEditable(true);
    jComboBox.getEditor().getEditorComponent().addFocusListener(new FocusListener(){			
        	public void focusGained(FocusEvent e) {
        		System.out.println("le composant a le focus");
        	}
     
        	public void focusLost(FocusEvent e) {
        		System.out.println("il perd le focus");
        	}  			
     });		
    ...

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 130
    Points
    130
    Par défaut
    Merci pour la réponse.
    Malheureusement ça pas marché.
    Il faut pas s'assurer que le JComboBox n'a pas un autre listner?

  16. #16
    Membre éprouvé Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Points : 934
    Points
    934
    Par défaut
    Une autre approche ?
    tu sais où se trouve la souris...
    (par exemple MouseInfo.getPointerInfo().getLocation().getX()); / gety(); )

    tu connais aussi les limites du combo...
    au mouvement de la souris tu regardes si elle se trouve au-dessus de combo !

    Bourrin ? oui.
    Je ne sais même pas si c'est applicable, je n'ai pas de java sous la main...

    Bonne année quand même.

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 130
    Points
    130
    Par défaut
    Bonjour et bonne année à tout le monde.
    Malheureusement j'ai toujours le même problème.
    Avez-vous une solution SVP?

  18. #18
    Membre confirmé Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Points : 631
    Points
    631
    Par défaut
    Salut amine1980
    je te propose de faire ça :
    Ton JCombo est éditable
    Une fois il perd le focus tu le rend nonEditable
    Puis tu programmes le composant qui a gagné le focus de tel façon s'il gagne le focus il le rend au JCombo
    Et comme ça tu pourras rendre le JCombo non Editable dans un milli de seconde ... et sans l'apercevoir
    On essaie
    et ça marchera

    Mon site
    Ma page

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 350
    Points : 130
    Points
    130
    Par défaut
    Bonjour,
    Merci pour ta réponse, mais j'ai le problème suivant :
    tu'as dit que je met mon combo editable et dès qu'il perde le focus je le rend non éditable, cette étape j'arrive pas la faire, le combo editable ne détecte pas l'évenement souris, donc je peux pas savoir s'il a perdu le focus ou non

    Remarque : pour que mon JCombo détecte les évenements du focus, je suis obligé de le rendre non editable.
    t'as un bout de code STP?

  20. #20
    Membre confirmé Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Points : 631
    Points
    631
    Par défaut
    la perte du focus de ton JCombo ça veut dire que le composant suivant le gagne !!!
    C'est ça l'idée
    On essaie
    et ça marchera

    Mon site
    Ma page

Discussions similaires

  1. Problème avec JComboBox
    Par Invité dans le forum Composants
    Réponses: 2
    Dernier message: 11/02/2009, 23h48
  2. Problème avec JComboBox
    Par muslim1987 dans le forum Débuter
    Réponses: 2
    Dernier message: 30/06/2008, 16h22
  3. problème avec jcombobox
    Par minooo dans le forum Composants
    Réponses: 2
    Dernier message: 15/01/2008, 12h20
  4. problème avec JComboBox
    Par ulysse031 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 29/12/2007, 00h01
  5. problème avec JComboBox
    Par ulysse031 dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 22/04/2007, 16h51

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