JMenu et JMenuItem

Résolu/Fermé
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 - 6 nov. 2006 à 14:32
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 - 6 nov. 2006 à 16:47
Salut:

Je suis en train de créer une application avec Swing.
Pour alléger mon code j'ai constaté que pour créer un JMenu ou un JMenuItem on utilise les mêmes méthodes :
1. setToolTip
2. setIcon
3. setMnemonic
4. setText
5. ...

Donc, j'ai voulu écrire une SEULE méthode pour se charger de tout ce travail (JMenu et JMenuItem ensemble).

Ceci est une version simplifiée de ma méthode.

private void myGenericMethod (Object object, String label, char c) {
    if (object instanceof JMenu) {
       JMenu menu = (JMenu)object;
       menu.setText (label);
       menu.setMnemonic (c);
       // ...
    }
    else if (object instanceof JMenuItem) {
       JMenuItem menuItem = (JMenuItem)object;
       menuItem.setText (label);
      

menuItem.setMnemonic (c);








       // ...
    }

}




J'ai remarqué que je suis en train de réécrire le même code.
Existe il une autre possibilité plus élégante?

Et Merci ...

8 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
6 nov. 2006 à 14:59
Salut,

 tu peux faire ça :
   
private void myGenericMethod (JMenuItem menu, String label, char c) {
    menu.setText (label);
    menu.setMnemonic (c);
}

à l'utilisation :

JMenu menu = new JMenu();
myGenericMethod (menu, "Test 1", '1');
JMenuItem menuItem = new JMenuItem();
t.myGenericMethod (menuItem, "Test 2", '2');

en effet JMenu hérite de JMenuItem ...

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
3
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
6 nov. 2006 à 14:43
Salut:

Comme il a était précisé la haut, cette solution est équivalente à définir deux méthodes indépendantes dont chacune prend comme paramètre (au lieu d'un Object) respectivement un JMenu et JMenuItem.
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
6 nov. 2006 à 15:33
Salut:

J'ai apprécié cette phrase : "en effet JMenu hérite de JMenuItem ...". Car elle résoud tout le problème.

Que veux tu dire par t (car je ne la voit pas déclarée):

t.myGenericMethod (menuItem, "Test 2", '2');

Merci ...
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
6 nov. 2006 à 15:38
Salut,

rien c'est une variable que j'au utiliser pour le test :P tu paux la zapper donc c'est :
JMenu menu = new JMenu();
myGenericMethod (menu, "Test 1", '1');
JMenuItem menuItem = new JMenuItem();
myGenericMethod (menuItem, "Test 2", '2');

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
6 nov. 2006 à 15:50
Salut:

Le code est maintenant bien allégé.
0
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
6 nov. 2006 à 16:14
Bonjour,
JMenu hérite de JMenuItem...
moi j'aurais fait l'inverse car c'est JmenuItem qui va avoir des attributs en + par rapport à JMenu enfin je crois.
ce n'est que mon point de vue

Bonne prog


lafolle
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
6 nov. 2006 à 16:38
Salut,

pour la culture voici les entetes des classes JMenu et JMenuItem dispo avec les sources de java

public class JMenu extends JMenuItem implements Accessible,MenuElement
public class JMenuItem extends AbstractButton implements Accessible,MenuElement

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
lafolle24320 Messages postés 406 Date d'inscription samedi 26 mars 2005 Statut Membre Dernière intervention 29 juin 2009 7
6 nov. 2006 à 16:47
Ok autant pour moi j'étais persuadée de l'inverse

dsl
bonne prog


lafolle
0
Rejoignez-nous