2009-09-02 13 views
0

Ich versuche, die Menüstruktur von einem JMenu in eine JMenuBar zu verschieben. Der obige Code zeigt verschiedene Menüs in Abhängigkeit von TEST. Für TEST == 1 erwarte ich aa bb in der Menüleiste, aber nur aa wird angezeigt? Der Code zeigt das Problem, es ist nicht mein richtiger Code ....Kann JMenu nicht in JMenuBar verschieben

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); 
    } 
} 

Antwort

0

Hehe, knifflige. Durch die Ausführung

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

das Menü, das Sie gerade mbar hinzugefügt wird von menu entfernt. Bei der nächsten Iteration menu.getItemCount() gibt 1 und Sie for Schleife ist vorbei. Dieser wird funktionieren:

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

Dammned! Ich denke, ich hatte dieses Jahr vorher und kann mich nicht erinnern. Vielen Dank ! – PeterMmm

Verwandte Themen