Bonjour,
je me trimbale un pavé de code de classe en classe depuis tout à l'heure et j'arrive pas à trouver comment me débrouiller pour l'écrire une bonne fois pour toute.
J'ai besoin de détecter les clics sur toutes sortes de composants Swing. Cependant, de nombreux composants n'ont pas la méthode addActionListener. Du coup, je mets un mouseListener sur l'objet, puis j'écris dans mes classes le code suivant :
Mais est-ce qu'il y aurait moyen d'écrire ça qq part sans le répéter?
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 public void mouseClicked(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) { ActionEvent event = new ActionEvent(this,ActionEvent.ACTION_PERFORMED,"ActionPerformed"); fireActionPerformed(event); } /** * Adds an <code>ActionListener</code> to the button. * @param l the <code>ActionListener</code> to be added */ public void addActionListener(ActionListener l) { listenerList.add(ActionListener.class, l); } /** * Removes an <code>ActionListener</code> from the button. * @param l the listener to be removed */ public void removeActionListener(ActionListener l) { listenerList.remove(ActionListener.class, l); } /** * Notifies all listeners that have registered interest for * notification on this event type. The event instance * is lazily created using the <code>event</code> * parameter. * * @param event the <code>ActionEvent</code> object */ public void fireActionPerformed(ActionEvent event) { for(ActionListener l : listenerList.getListeners(ActionListener.class)) { l.actionPerformed(event); } }
L'idéal serait de faire un héritage multiple, mais pas possible en Java.
Une interface? Sauf que ces c*** refusent que l'on développe leurs méthodes.
Y a-t-il une parade?
Partager