代码比较多,摘取关联部分如下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);
其余都是文字的设定等,以上有问题吗?
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,菜单展开时,最小化然后再最大化,开始展开的菜单仍然展开;
2,菜单展开的场合,调用alt热键切换焦点到画面上的某些组件时,菜单仍然展开,这时候菜单还是响应某些键盘事件,比如回车,空格等。