import java.awt.BorderLayout;
import javax.swing.*;
public class MenuTest extends JFrame {  
BorderLayout borderLayout1 = new BorderLayout();   
JMenuBar jMenuBar1 = new JMenuBar();   
JMenu jMenu1 = new JMenu();   
JMenuItem jMenuItem1 = new JMenuItem();  
JMenu jMenu2 = new JMenu();  
JMenuItem jMenuItem2 = new JMenuItem(); 
    JMenuItem jMenuItem3 = new JMenuItem();  
JMenuItem jMenuItem4 = new JMenuItem(); 
JLabel jLabel1 = new JLabel();   

public MenuTest() {      
try {            jbInit();     
} catch (Exception exception) {    
exception.printStackTrace();     
}   

private void jbInit() throws Exception {     
getContentPane().setLayout(borderLayout1);       
this.setJMenuBar(jMenuBar1);       
jMenu1.setText("主板1");    
jMenu2.setText("主板2");     
jMenuItem1.setText("芯片1");     
jMenuItem3.setText("硬盘1");    
jMenuItem2.setText("芯片2");     
jMenuItem4.setText("硬盘2");      
jLabel1.setText("上面那栏就是你所谓的机箱");      
jMenuBar1.add(jMenu1);       
jMenuBar1.add(jMenu2);     
jMenu1.add(jMenuItem3);     
jMenu1.add(jMenuItem1);      
jMenu2.add(jMenuItem4);     
jMenu2.add(jMenuItem2);    
this.getContentPane().add(jLabel1, java.awt.BorderLayout.CENTER);  
}   

public static void main(String[] args){        
MenuTest inst= new MenuTest();     
inst.pack();    
inst.show();    }
}运行后,按f10,会自动触发菜单栏,怎么去掉这个默认的f10快捷键?

解决方案 »

  1.   

    重写processKeyBinding方法 
    public boolean processKeyBinding(KeyStroke ks,  KeyEvent e, int condition,  boolean pressed){ 
            if(e.getKeyCode() == KeyEvent.VK_F10){
              return true;
    }
            super.processKeyBinding(ks, e, condition, pressed); 
            return true;
        } 
     
      

  2.   


    对头:JMenuBar jMenuBar1 = new JMenuBar() {
    public boolean processKeyBinding(KeyStroke ks, KeyEvent e,
    int condition, boolean pressed) {
    if (e.getKeyCode() == KeyEvent.VK_F10) {
    return true;
    }
    super.processKeyBinding(ks, e, condition, pressed);
    return true;
    }
    };