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 :

JComboBox et moussePressed


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2007
    Messages : 80
    Par défaut JComboBox et moussePressed
    Bonjour,

    Un problème tout simple : JComboBox ne réagit à l'évènement mousePressed que si je clique sur la partie liste; pas quand je clique sur la petite flèche à sa droite... comportement normal ?

    Voilà le petit bout de code qui illustre le pb
    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 java.awt.Dimension;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import javax.swing.JComboBox;
    import javax.swing.JFrame;
    import javax.swing.SwingUtilities;
     
    /**
     * L'évènement mousePressed n'est pas déclenché par un clic sur la flèche du
     * JCombo mais seulement quand on presse la liste. Normal ?
     * 
     * @author pverley
     */
    public class JComboFrame extends JFrame {
     
        public JComboFrame() {
     
            JComboBox cbBox = new JComboBox(new String[]{"item1", "item2", "item3"});
            cbBox.addMouseListener(new MouseAdapter() {
     
                @Override
                public void mousePressed(MouseEvent evt) {
                    System.out.println("mousePressed");
                }
            });
     
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setMinimumSize(new Dimension(150, 0));
            getContentPane().add(cbBox);
            pack();
        }
     
        public static void main(String[] args) {
     
            SwingUtilities.invokeLater(new Runnable() {
     
                public void run() {
                    new JComboFrame().setVisible(true);
                }
            });
        }
    }
    Comment capter l'évènement mousePressed sur toutes les parties du JComboBox ?
    D'avance merci,

    Philippe

  2. #2
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Par défaut
    bonjour,
    Il faut que tu ajoute un ItemListener comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    cbBox.addItemListener(new ItemListener(){
    	    	public void itemStateChanged(ItemEvent e){
    	    		System.out.println("mousePressed");
    		 	}
    		 });
    j'espere que ca t'aideras
    bonne journée++

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2007
    Messages : 80
    Par défaut
    Bonjour,

    Merci pour ta réponse 83 mais ce n'est pas l'évènement que je souhaite capter. A moins que je n'ai pas bien compris ce que tu cherches à me montrer.

    Ma comboBox propose une série de variable associées à des animations. Chaque fois que l'utilisateur presse sur la comboBox, je souhaite suspendre l'animation. Pour ça j'ai besoin de l'évènement mousePressed. Le problème est que l'évènement n'est généré que quand je clique sur la partie "liste" du Combo, pas sur la flèche.

    Ma question reste donc la même : comment capter l'évènement mousePressed sur toutes les parties du JComboBox ?

    D'avance merci,
    Philippe.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2007
    Messages : 80
    Par défaut
    Je n'avais pas suffisamment cherché et je crois que je viens de trouver solution à mon problème.

    JComboBox est constitué de plusieurs Component. Le premier composant est apparemment le bouton associé au combo. Il suffit alors de lui ajouter un mouseListener et le tour est joué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    cbBox.addMouseListener([...]);
    cbBox.getComponent(0).addMouseListener([...]);
    Par contre je ne saurais dire si c'est une façon propre de le faire...

    Philippe.

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Février 2007
    Messages : 80
    Par défaut
    Comme bien souvent, plus qu'un problème technique, c'est la façon de définir le comportement de l'application qui pèche.

    J'ai une comboBox qui active des animations. Je souhaite que l'animation soit suspendue dès que l'utilisateur clique sur le combo, pour ensuite, soit la relancer (si pas de changement d'item) soit en lancer une autre (si changement d'item).
    Dans ce cas précis, je pense que les évènements popupMenuWillBecomeInvisible et popupMenuWillBecomeVisible sont bien mieux adaptés à ce que je souhaite faire qu'un mousePressed.

    Au final j'ai fait la discussion tout seul... mais poser le problème sur le forum m'aura permis d'avancer ! A délester éventuellement.

    Philippe.

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

Discussions similaires

  1. [JComboBox] Mmise à jour contenu
    Par java_math dans le forum Composants
    Réponses: 4
    Dernier message: 16/07/2008, 18h27
  2. JComboBox action
    Par calypso dans le forum Composants
    Réponses: 4
    Dernier message: 02/08/2004, 15h41
  3. [jcombobox]l'élément affiché lié à un autre objet
    Par szdavid dans le forum Composants
    Réponses: 3
    Dernier message: 11/05/2004, 10h17
  4. [swing][JComboBox]Problème de taille
    Par n!co dans le forum Composants
    Réponses: 8
    Dernier message: 06/03/2004, 10h53
  5. Couleur d'une JComboBox disabled
    Par ced dans le forum Composants
    Réponses: 6
    Dernier message: 06/01/2004, 15h33

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