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 {/***@paramargs*/publicstaticvoid 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 {
/****/privatestaticfinallongserialVersionUID = 1L;publicvoid mouseClicked(MouseEvent arg0) {System.
out.println("ici1");}
publicvoid mouseEntered(MouseEvent arg0) {System.
out.println("ici2");}
publicvoid mouseExited(MouseEvent arg0) {System.
out.println("ici3");}
publicvoid mousePressed(MouseEvent arg0) {System.
out.println("ici4");}
publicvoid mouseReleased(MouseEvent arg0) {System.
out.println("ici5");}
public mon_combo(String[] a){
super(a);this.addMouseListener(this);this.addFocusListener(this);this.addMouseMotionListener(this);}
publicvoid contentsChanged(ListDataEvent arg0) {System.
out.println("ici6");}
publicvoid intervalAdded(ListDataEvent arg0) {System.
out.println("ici7");}
publicvoid intervalRemoved(ListDataEvent arg0) {System.
out.println("ici8");}
publicvoid actionPerformed (ActionEvent evt)/* * Ecouteur d'action.Toutes les actions faîtes par l'utilisateur
* sont attrapé ici
*
*/
{
System.
out.println("ici9");}
publicvoid mouseDragged(MouseEvent arg0) {System.
out.println("ici10");}
publicvoid mouseMoved(MouseEvent arg0) {System.
out.println("ici11");}
publicvoid focusGained(FocusEvent arg0) {System.
out.println("ici12");}
publicvoid 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