2013-06-02 66 views
1

以下是我的代碼。如何將JMenus動態添加到JMenuBar

import java.awt.Dimension; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JFrame; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 

public class MenuBarProblem { 

    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     frame.setSize(new Dimension(300, 400)); 

     JMenu menu1 = new JMenu("First"); 
     JMenuItem item = new JMenuItem("Add menu"); 
     menu1.add(item); 
     final JMenuBar mb = new JMenuBar(); 
     mb.add(menu1); 
     frame.setJMenuBar(mb); 
     item.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent arg0) { 
       JMenu menu1 = new JMenu("First"); 
       JMenuItem item = new JMenuItem("Add menu"); 
       menu1.add(item); 
       mb.add(menu1); 
       System.out.println(mb.getMenuCount()); 
      } 
     }); 
     frame.setVisible(true); 
    } 
} 

我想要做的是當單擊菜單item1時將菜單添加到菜單欄。行System.out.println(mb.getMenuCount());打印菜單項正在添加。 (點擊菜單項1時打印2,3,4)但菜單欄不顯示菜單。

我應該怎麼做才能讓動態添加的菜單項顯示在菜單欄上?我正在使用Java 1.6。

+0

嘗試調用repaint,看看是否有幫助! –

回答

5

mb使用添加額外的菜單後:

mb.revalidate(); 

這將導致組件來獲得replainted,新後已添加菜單已插入組件樹中。

1

嘗試調用重繪後

frame.setVisible(true); 

frame.repaint(); 
相關問題