2009-09-02 11 views
0

メニュー構造をJMenuからJMenuBarに移動しようとしています。上記のコードは、TESTによって異なるメニューを示しています。 TEST == 1の場合、メニューバーにaa bbがありますが、aaだけが表示されますか?コードは問題を示しています。私の実際のコードではありません。JMenuを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); 
    } 
} 

答えて

0

Hehe、tricky one。

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

を実行することであなただけのmbarに追加メニューがmenuから削除されます。次の繰り返しでmenu.getItemCount()1を返し、forループが終了しました。これは動作します:

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

Dammned!私はこれまで何年も前だったと思います。ありがとうございました ! – PeterMmm