2009-09-02 11 views
0

J'essaie de déplacer la structure de menu d'un JMenu dans un JMenuBar. Le code ci-dessus montre différents menus en fonction de TEST. Pour TEST == 1 j'attends aa bb dans la barre de menu, mais seulement aa est montré? Le code montre le problème, ce n'est pas mon vrai code ....Impossible de déplacer JMenu vers JMenuBar

public class Test { 

    public static void main(String[] args) { 

     int TEST = 1; // or 2 

     JMenu menu = new JMenu("a"); 

     JMenu menu2 = new JMenu("aa"); 
     menu.add(menu2); 

     menu2 = new JMenu("bb"); 
     menu.add(menu2); 

     JMenuBar mbar = new JMenuBar(); 

     if (TEST == 1) { 
      for (int i = 0; i < menu.getItemCount(); i++) { 
       mbar.add(menu.getItem(i)); 
      } 
     } 

     if (TEST == 2) { 
      mbar = new JMenuBar(); 
      mbar.add(menu); 
     } 

     JFrame frame = new JFrame(); 
     frame.setJMenuBar(mbar); 
     frame.setSize(400, 200); 
     frame.setVisible(true); 
    } 
} 

Répondre

0

Hehe, difficile un. En exécutant

mbar.add(menu.getItem(i)); 

le menu que vous venez d'ajouter à mbar est retiré de menu. Sur la prochaine itération menu.getItemCount() renvoie 1 et vous for boucle est terminée. Celui-ci va fonctionner:

if (TEST == 1) { 
    int m = menu.getItemCount(); 
    for (int i = 0; i < m; i++) { 
     mbar.add(menu.getItem(0)); 
    } 
} 
+0

Dammned! Je pense que j'ai eu cette année et ne me souviens plus. Je vous remercie ! – PeterMmm

Questions connexes