Listener JCombobox

Guegue85 Messages postés 11 Date d'inscription samedi 12 février 2005 Statut Membre Dernière intervention 12 août 2006 - 27 juil. 2006 à 21:21
cs_Kouikoui Messages postés 23 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 26 mars 2007 - 3 août 2006 à 11:27
Bonsoir,

Voilà, j'ai une JCombobx, dans laquelle il y a une liste de choix. Au depart, la combo affiche un item du style "Choisissez la ville". Je voudrais que lorsque l'on clique sur la combo, cet item disparaisse.

Je ne sais pas quel Listener utilisé, car ActionListener se lance une fois qu'on a selectionner un item et MouseListener n'est pas operationnel quand on clique sur la fleche de droite de la Combobox.

Si quelqu'un a une idée, je le remercie

Bonne soirée

2 réponses

ObiWanKennedy Messages postés 60 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 29 octobre 2010 1
29 juil. 2006 à 23:57
Salut, j'ai essayé de faire ce que tu dis je n'y suis pas arriver j'ai essayer avec MouseListener,ActionListener,ListDataListener,MouseMotionListener  aucun ne réagit lors du clique sur la flèche. Parcontre j'ai implémenté ma classe avec un focuslistener et il réagit lors du clique sur la combobox dans le cas ou elle n'etait pas séléctionné donc si tu as un formulaire avec plusieurs champs sa reste jouable. lors du clique sur la combobox tu reçoit le message que l'utilisateur à placer son "focus" sur la liste déroulante. Donc qu'il clique sur la flèche où le reste pour dérouler la liste celà t'enverra le message. (et tu peux s'avoir si il perds le "focus") Je te file vite fait le code que j'ai fais pour tester ça il y a de classe un main et une classe qui hérite de Jcombobox voilà j'espere que cela t'aidera.

 


import

javax.swing.JFrame;

import

javax.swing.JPanel;
import

javax.swing.JTextField;

 

 

 

public

class ecouteur {

/**

*
@param
args

*/

public
static
void main(String[] args) {

JFrame mafenetre =

new JFrame(
"Ma fenetre");String[] machaine = {

"bonjour","tout le monde"};mon_combo lecombo new mon_combo(machaine);JPanel monpanno

new JPanel();JTextField mon =

new JTextField(
"salut");mafenetre.setDefaultCloseOperation (JFrame.

EXIT_ON_CLOSE );mafenetre.setSize(600,400);

lecombo.setVisible(

true);monpanno.add(lecombo);

monpanno.add(mon);

//monpanno.addMouseListener(this);monpanno.setVisible(

true);mafenetre.getContentPane().add(monpanno);

mafenetre.setVisible(

true);

}

}

//////////////////////////////// fin de la class main //////////////////////

import

java.awt.event.ActionEvent;
import

java.awt.event.ActionListener;
import

java.awt.event.FocusEvent;
import

java.awt.event.FocusListener;
import

java.awt.event.MouseEvent;
import

java.awt.event.MouseListener;
import

java.awt.event.MouseMotionListener;

import

javax.swing.JComboBox;
import

javax.swing.event.ListDataEvent;
import

javax.swing.event.ListDataListener;

 

public

class mon_combo
extends JComboBox
implements MouseListener,ActionListener,ListDataListener,MouseMotionListener,FocusListener {

/**

*

*/

private
static
final
long
serialVersionUID = 1L;

public
void mouseClicked(MouseEvent arg0) {System.

out.println(
"ici1");

}

public
void mouseEntered(MouseEvent arg0) {System.

out.println(
"ici2");

}

public
void mouseExited(MouseEvent arg0) {System.

out.println(
"ici3");

}

public
void mousePressed(MouseEvent arg0) {System.

out.println(
"ici4");

}

public
void mouseReleased(MouseEvent arg0) {System.

out.println(
"ici5");

}

public mon_combo(String[] a){

super(a);

this.addMouseListener(
this);

this.addFocusListener(
this);

this.addMouseMotionListener(
this);}

public
void contentsChanged(ListDataEvent arg0) {System.

out.println(
"ici6");

}

public
void intervalAdded(ListDataEvent arg0) {System.

out.println(
"ici7");

}

public
void intervalRemoved(ListDataEvent arg0) {System.

out.println(
"ici8");

}

public
void actionPerformed (ActionEvent evt)

/* * Ecouteur d'action.Toutes les actions faîtes par l'utilisateur

* sont attrapé ici

*

*/

{

System.

out.println(
"ici9");}

public
void mouseDragged(MouseEvent arg0) {System.

out.println(
"ici10");

}

public
void mouseMoved(MouseEvent arg0) {System.

out.println(
"ici11");

}

public
void focusGained(FocusEvent arg0) {System.

out.println(
"ici12");

}

public
void focusLost(FocusEvent arg0) {System.

out.println(
"ici13");

}

}

Bon je n'ai mis que des affichages console. bete et méchant ce n'est pas tres classe (désolé je sors (classe java jeu de mot ))  mais bon il te restera à effectuer le codage de temps fonctions bon je pense que celà ne correspond pas à 100 % a ton souhait mais en réfléchissant un peu tu dois pouvoir donné a ton application le comportement que tu veux.

I am a heap of shit to human appearance
0
cs_Kouikoui Messages postés 23 Date d'inscription lundi 30 juin 2003 Statut Membre Dernière intervention 26 mars 2007
3 août 2006 à 11:27
Salut,

Je pense qu'un ItemListener pourrait résoudre ton problème ...
Essaye de faire comme ca

Ta classe implémente ItemListener, il te faut donc ajouter cette méthode :

public void itemStateChanged(ItemEvent e)
    {
        if(e.getSource()==cbo && cbo.getItemAt(0)=="Choisissez la ville")
        {
            cbo.remove(0);
        }
    }

Je suis pas sur a 100 % que le 0 soit la premiere position d'une JComboBox, si ce n'est pas 0, ce sera donc 1 ... ;)

Espérant que cela t'aura aidé,

Kouikoui
0
Rejoignez-nous