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 action sans cliquer


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut JCombobox action sans cliquer
    Bonjour à tous,

    J'ai une liste déroulante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //Liste déroulante
            membre_masquer= new JComboBox();
            membre_masquer.setFont(Police.arial17);
            membre_masquer.setToolTipText("Connection d'un membre");
            membre_masquer.addActionListener(new ActionListener(){
    		public void actionPerformed(ActionEvent arg0) {
    			System.out.println("action_bouton_combo");
     
                }               
    	});
            this.add(membre_masquer);

    Jusque là tous va bien.

    Plus loin dans mon code lorsque je veux supprimer la liste ou ajouter un item du JCombobox ce la me créer l'action de celui-ci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    membre_masquer.removeAllItems();
    // OU LE CODE:
    membre_masquer.addItem(membres_connecter.get(x).getNom()+" "+membres_connecter.get(x).getPrenom());
    Chaque fois que je met un de ces morceaux de code après la déclaration:
    J'ai dans la console:
    Et tous ça sans cliquer.

    Je cherche une action sur un JComboBox uniquement lors d'un clique.

    Si vous pouvez m'éclarer!

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 74
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //Liste déroulante
            membre_masquer= new JComboBox();
            membre_masquer.setFont(Police.arial17);
            membre_masquer.setToolTipText("Connection d'un membre");
            membre_masquer.addActionListener(new ActionListener(){
    		public void actionPerformed(ActionEvent arg0) {
    
    
    if (arg0.getSource() == membre_masquer)
    System.out.println("action_bouton_combo"); } }); this.add(membre_masquer);
    Normalement, de cette manière, ton listener ne se déclenchera que lors du clique sur ton bouton.

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut
    Merci de ta réponse sebabarre,

    J'ai essayé ce que tu m'as mis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (arg0.getSource() == membre_masquer);
    J'ai fais un essai avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      membre_masquer.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent event) {
    				if (event.getSource() == membre_masquer){
    					System.out.println("test clique liste déroulante");
    				}
    			}               
    		});
    Dans la console:
    Dès que j'ajoute 3 éléments au JComboBox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DEBUG - test clique liste déroulante
    DEBUG - test clique liste déroulante
    DEBUG - test clique liste déroulante
    Malheureusement, cette méthode ne fonctionne pas

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 74
    Par défaut
    Elle ne fonctionne pas => c'est-à-dire ?
    message d'erreur ?
    pas d'action ?
    pas d'affichage dans la console ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2011
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mai 2011
    Messages : 74
    Par défaut
    Sinon, plus généralement, pour les ComboBox il est plus conseillé d'utiliser les ItemListener :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public void itemStateChanged(ItemEvent arg0) {
       if (arg0.getStateChange == ItemEvent.SELECTED ) {
                //ton code qui ne sera exécuté seulement que lors de la sélection dans ta combo
         }
    }

  6. #6
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut
    Merci pour ta réponse Sebabarre,

    Lorsque j'ai mis que la méthode ne fonctionne pas, c'est que j'ai le même résultat.
    J'ai toujours une action sur la liste déroulante.

    J'ai donc essayé ce que tu m'as mis dans ton second post:
    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
     //Liste déroulante
            membre_masquer= new JComboBox();
            membre_masquer.setFont(Police.arial17);
            membre_masquer.setToolTipText("Connexion d'un membre");
            membre_masquer.addItemListener(new ItemListener(){
    			@Override
    			public void itemStateChanged(ItemEvent paramItemEvent) {
    				// TODO Auto-generated method stub
    				if (paramItemEvent.getStateChange() == ItemEvent.SELECTED ) {
    					System.out.println("test clique liste déroulante");
    		            //ton code qui ne sera exécuté seulement que lors de la sélection dans ta combo
    				}
    			}
     
            });
    J'ai encore dans la console sans cliquer sur le JComboBox:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DEBUG - test clique liste déroulante
    En cherchant sur le forum j'ai trouvé le même type de problème:
    http://www.developpez.net/forums/d60...tionperformed/

    J'ai testé les réponses d'ajouter un flag, mais ça n'a rien changé.

    J'ai donc essayé de créer un model.
    J'ai vu que ça fonctionne. Je n'ai plus de problème lors de l'ajout.

    Cependant, je ne sais pas comment faire pour mettre dans le model l'action de sélection.

    Si je met:
    membre_masquer.setSelectedIndex(-1);// J'indique a la JComboBox de ne pas sélectionner d'élément.

    Si j'écris ce code, j'ai a nouveau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DEBUG - test clique liste déroulante
    Comment faire pour sélectionner un item avec le model: ComboBoxModel

    Voici ma classe Model:
    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
    public class MyComboBoxModel extends AbstractListModel implements ComboBoxModel {
    	private ArrayList<String>  liste = new ArrayList<String>();
    	private String selection;
     
     
    	public MyComboBoxModel(){
    	}
     
    	@Override
    	public void addListDataListener(ListDataListener arg0) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public Object getElementAt(int index) {
    		// TODO Auto-generated method stub
    		 return liste.get(index);
    	}
     
    	@Override
    	public int getSize() {
    		// TODO Auto-generated method stub
    		return liste.size();
    	}
     
    	@Override
    	public void removeListDataListener(ListDataListener arg0) {
    		// TODO Auto-generated method stub
     
    	}
     
    	@Override
    	public Object getSelectedItem() {
    		// TODO Auto-generated method stub
    		return selection;
    	}
     
    	@Override
    	public void setSelectedItem(Object anItem) {
    		selection = (String) anItem;
    		// TODO Auto-generated method stub
     
    	}
     
    	public void addItem(String liste2){
    		liste.add(liste2);
    	}
     
    	public void removeAllItems() {
    		liste.removeAll(liste);
    	}
     
    }
    L'init du composant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    //Liste déroulante
            membre_masquer= new JComboBox(new MyComboBoxModel());
            membre_masquer_model= (MyComboBoxModel)membre_masquer.getModel();
            membre_masquer.setFont(Police.arial17);
            membre_masquer.setToolTipText("Connexion d'un membre");
            membre_masquer.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent event) {
    				System.out.println("test clique liste déroulante");
     
                }               
    		});
    Ma méthode pour remplir la liste déroulante:
    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
    protected void recherche_membre() {
    		membres_connecter.clear();//On efface
    		membres_connecter = membresDao.select("connecter", "1", 0);
    		if(membres_connecter.size()==0){
        		membre_masquer.setVisible(false);
        		masque_connect.setVisible(false);
        	}
        	else{
        		membre_masquer_model.removeAllItems();
        		membres_masquer.clear();
        		membres_masquer=new ArrayList<ArrayList<Object>>();
        		for(int x=0;x<membres_connecter.size();x++){
     
        			membres_masquer.add(x, new ArrayList<Object>());
        			membres_masquer.get(x).add(0, String.valueOf(membres_connecter.get(x).getId()));
        			membres_masquer.get(x).add(1, membres_connecter.get(x));
        			membre_masquer_model.addItem(membres_connecter.get(x).getNom()+" "+membres_connecter.get(x).getPrenom());
    			}
        		System.out.println("test");
    	    	//membre_masquer.setSelectedIndex(-1); -> Le problème est ICI
    	    	System.out.println("test1");
    	    	membre_masquer.setVisible(true);
    	    	masque_connect.setVisible(true);
        	}
    	}
    Merci encore pour ton aide.

    >EDIT
    Mon problème a changé je poste un nouveau sujet et clos celui-ci.
    http://www.developpez.net/forums/f11...osants/listes/

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

Discussions similaires

  1. Lancer une action struts sans cliquer sur un bouton submit
    Par cryosore94 dans le forum Struts 1
    Réponses: 10
    Dernier message: 22/03/2009, 16h08
  2. [Struts][debutant]Action sans Form?
    Par sebus dans le forum Struts 1
    Réponses: 6
    Dernier message: 27/04/2006, 16h26
  3. [Struts]Executer une action sans ActionForm associé ?
    Par brousaille dans le forum Struts 1
    Réponses: 7
    Dernier message: 19/09/2005, 17h24
  4. JComboBox action
    Par calypso dans le forum Composants
    Réponses: 4
    Dernier message: 02/08/2004, 15h41
  5. [VB6] Déplacer la form sans cliquer sur la barre de titre
    Par Ingham dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/11/2002, 02h09

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