JMenuItem manuellement

Résolu
kyokosan Messages postés 41 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 10 avril 2008 - 31 janv. 2008 à 23:00
kyokosan Messages postés 41 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 10 avril 2008 - 1 févr. 2008 à 22:05
salut 
comment  faire un jMenuItem manuellement car je veux que le nombre de jMenuItem ce génère selon un nombre fixé par l'utilisateur (variable) alors j'ai fait ça :

static JMenuItem []jMenuItem8; // déclaration
.
.
.
.
.
 for (int i=0;i<Dialog1.nb_donné;i++)
      {  jMenuItem8[i].addActionListener(new Frame1_jMenuItem8_actionAdapter(this,i));}
//selon le nb_donné je génère le jMenuItem8
.
.
.
.for (int i=0;i<Dialog1.nb_donné;i++)
    {jMenu4.add(jMenuItem8[i]);}            // j'ai associé jMenuItem8 au jMenu4

.
.
.
.
void jMenuItem8_actionPerformed(ActionEvent e,int y) {// le corps de ma fonction }
.
.
.
.
class Frame1_jMenuItem8_actionAdapter implements java.awt.event.ActionListener {
 Frame1 adaptee;
  int y;
 Frame1_jMenuItem8_actionAdapter(Frame1 adaptee,int i) {
   this.adaptee = adaptee;
   this.y =i;
 }
 public void actionPerformed(ActionEvent e) {
   adaptee.jMenuItem8_actionPerformed(e,y);
 }
}
.
.
.
.
class Frame1_jMenu4_actionAdapter implements java.awt.event.ActionListener {
  Frame1 adaptee;


  Frame1_jMenu4_actionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void actionPerformed(ActionEvent e) {
    adaptee.jMenu4_actionPerformed(e);
  }
}



A votre avis qu'est ce que j'ai oublié? Car en  compilant une erreur est survenue 




java.lang.NullPointerException
 at gestion_de_coherence.Frame1_jMenuItem8_actionAdapter.actionPerformed(Frame1.java:1519)
 at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1764)
 at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1817)
 at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:419)
 at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:257)
 at javax.swing.AbstractButton.doClick(AbstractButton.java:289)
 at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1113)
 at javax.swing.plaf.basic.BasicMenuItemUI$MouseInputHandler.mouseReleased(BasicMenuItemUI.java:943)
 at java.awt.Component.processMouseEvent(Component.java:5134)
 at java.awt.Component.processEvent(Component.java:4931)
 at java.awt.Container.processEvent(Container.java:1566)
 at java.awt.Component.dispatchEventImpl(Component.java:3639)
 at java.awt.Container.dispatchEventImpl(Container.java:1623)
 at java.awt.Component.dispatchEvent(Component.java:3480)
 at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3450)
 at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3165)
 at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3095)
 at java.awt.Container.dispatchEventImpl(Container.java:1609)
 at java.awt.Window.dispatchEventImpl(Window.java:1590)
 at java.awt.Component.dispatchEvent(Component.java:3480)
 at java.awt.EventQueue.dispatchEvent(EventQueue.java:450)
 at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:197)
 at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:144)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:136)
 at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)

merci pour votre aide
    

6 réponses

Utilisateur anonyme
1 févr. 2008 à 21:40
C'est bien ce que je te disais! adaptee est à null. Regarde où tu appelles ton contructeur "Frame1_jMenuItem8_actionAdapter(Frame1 adaptee,int i)". Tu dois lui passer un objet instance de Frame1 à null en fait.

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
3
Utilisateur anonyme
1 févr. 2008 à 09:32
Ne prends pas un tableau car ça t'oblige à l'allouer à une taille précise et comme tu tapes dans une case de ton tableau qui contient null, ça te fait une NullPointerException.

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0
kyokosan Messages postés 41 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 10 avril 2008
1 févr. 2008 à 12:48
salut



oui c'est vrai je le fais ailleurs j'ai oublié de le mentionner 




  Frame1.jMenuItem8=new JMenuItem[Dialog1.nb_donné];
    for (int i=1;i<=Dialog1.nb_donné;i++)
                                  {


                                    Frame1.jMenuItem8[i-1]=new JMenuItem();
                                    Frame1.jMenuItem8[i-1].setBackground(new Color(0xffcc99));
                                    Frame1.jMenuItem8[i-1].setText("donnée "+i);
                                    Frame1.jMenuItem8[i-1].addActionListener(new Frame1_jMenuItem8_actionAdapter(FR,i-1));
                                    FR.jMenu4.add(Frame1.jMenuItem8[i-1]);


 


                                  }
donc avotre avis le prb est ou?
0
Utilisateur anonyme
1 févr. 2008 à 21:26
Donne le code source entier pour qu'on puisse déboguer. Normalement, les traces d'exception devraient t'indiquer la ligne où ça cloche. J'ai l'impression que l'attribut "adaptee" est à null.

TUER : http://tuer.tuxfamily.org/tuer.php

yeah! vive java
0

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

Posez votre question
kyokosan Messages postés 41 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 10 avril 2008
1 févr. 2008 à 21:36
c'est long mais en compilant l'erreur se trouve au niveau de
 class Frame1_jMenuItem8_actionAdapter implements java.awt.event.ActionListener {
 Frame1 adaptee;
  int y;
 Frame1_jMenuItem8_actionAdapter(Frame1 adaptee,int i) {
   this.adaptee = adaptee;
   this.y =i;
 }
 public void actionPerformed(ActionEvent e) {
   adaptee.jMenuItem8_actionPerformed(e,y);// erreur a ce niveau
 }
}
0
kyokosan Messages postés 41 Date d'inscription dimanche 28 octobre 2007 Statut Membre Dernière intervention 10 avril 2008
1 févr. 2008 à 22:05
ah oui c'est vrai j'ai complètement oublié il me fallait ça Dialog1.FR=this dans la classe Frame1
merci mon ami ;
bon courage
0
Rejoignez-nous