如题比如
JMenuItem a = new JMenuItem("确定");
a.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,   KeyEvent.CTRL_MASK));
a.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,   KeyEvent.CTRL_MASK));我想让快捷键Ctrl+a 和Ctrl+b都起作用怎么办?

解决方案 »

  1.   

    不知道,帮忙顶下,Netbeans里有一个功能有两个快捷键的情况,估计这个也可以
      

  2.   

    JMenu menu;
    menu.setMnemonic(KeyEvent.VK_A);其中VK_A 就是 快捷键 Alt+A A 你可以修改为任何一个字符
      

  3.   

    public class 你的类 implements ActionListener
      

  4.   

    如果包括子菜单 你的类还要   implements   ItemListener
    设置子菜单的快捷键是
    cbMenuItem.setMnemonic(KeyEvent.VK_C);
    cbMenuItem.addItemListener(this);
      

  5.   

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;import javax.swing.*;public class T
    {
    public static void main(String[] args)
    {
    final JFrame f = new JFrame();

    JMenuBar mb = new JMenuBar();
    JMenu fm = new JMenu("File");
    JMenuItem mi = new JMenuItem("Test");
    mb.add(fm);
    fm.add(mi);

    KeyStroke keyStroke1 = KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK);
    KeyStroke keyStroke2 = KeyStroke.getKeyStroke(KeyEvent.VK_B, KeyEvent.CTRL_MASK);
                    mi.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(keyStroke1, "doClick");
                    mi.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(keyStroke2, "doClick");

    mi.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    JOptionPane.showMessageDialog(f, "Test");
    }
    });

    f.setJMenuBar(mb);
    f.setSize(300, 300);
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
    }
    }
      

  6.   

    还可以换种方法试试:
    对JMenuItem添加KeyListener
    在keyPressed方法中先判断Ctrl键是否按下
    再判断a,b键有没有按然后响应.但是可能会有焦点问题,因为打开窗体时键盘焦点不在JMenuItem上.
    用setFocusable()去给JMenuItem添加焦点没有实践过,仅作参考