代码比较多,摘取关联部分如下jbint中包括:
    initMenu();
    oMenuBar.add(mnuFile);
    oMenuBar.add(mnuOperation);
    oMenuBar.add(mnuSecurity);
    oMenuBar.add(mnuHelp);    addMenuActionListener(mnuFile,this,true);
    addMenuActionListener(mnuOperation,this,true);
    addMenuActionListener(mnuSecurity,this,true);
    addMenuActionListener(mnuHelp,this,true);initMenu()方法中包括:
  ActionMap actionMap = (ActionMap)UIManager.get("MenuBar.actionMap");
  actionMap.put("takeFocus", new AbstractAction(){
    public void actionPerformed(ActionEvent e) {
      JMenuBar menuBar = (JMenuBar)e.getSource();
      MenuSelectionManager defaultManager = MenuSelectionManager.defaultManager();
      MenuElement me[];
      //int count;
      for(int i=0,count=menuBar.getMenuCount();i<count;i++){
        JMenu menu = menuBar.getMenu(i);
        if (menu!=null) {
                if( !menu.isEnabled()) continue;
                me = new MenuElement[3];
                me[0] = (MenuElement) menuBar;
                me[1] = (MenuElement) menu;
//                me[2] = (MenuElement) menu.getPopupMenu();
                defaultManager.setSelectedPath(me);
                break;
        }//end if
      }//end for
    }//end actionPerformed
  });//end put
  SwingUtilities.replaceUIActionMap(oMenuBar, actionMap);
其余都是文字的设定等,以上有问题吗?

解决方案 »

  1.   

    何不试一试:最大化时this.validate()或this.repaint();
      

  2.   

    在windowIconified();事件里添加this.repaint();
      

  3.   

    现在发现问题的现象其实是这样的:
    1,菜单展开时,最小化然后再最大化,开始展开的菜单仍然展开;
    2,菜单展开的场合,调用alt热键切换焦点到画面上的某些组件时,菜单仍然展开,这时候菜单还是响应某些键盘事件,比如回车,空格等。