【发布时间】:2013-05-22 00:58:30
【问题描述】:
请看下面的代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MenuActions extends JFrame
{
private JMenuBar jmb;
private JMenu file;
private JMenuItem open;
public MenuActions()
{
jmb = new JMenuBar();
file = new JMenu("File");
open = new JMenuItem("Open");
open.addActionListener(new MenuAction());
open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,KeyEvent.VK_P,ActionEvent.CTRL_MASK));
file.add(open);
jmb.add(file);
this.setJMenuBar(jmb);
getContentPane().add(new JPanel());
this.setSize(200,200);
this.setVisible(true);
this.validate();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private class MenuAction implements ActionListener
{
public void actionPerformed(ActionEvent ae)
{
JOptionPane.showMessageDialog(null,"OK");
}
}
public static void main(String[]args)
{
new MenuActions();
}
}
在这里,当同时按下 CTRL+O+P 时,我需要触发 JMenuItem 的 EventHandler,所以它会显示 JOptionPane 说“OK”。但正如你所看到的,我的尝试是 给出错误!当这三个键同时按下时,我该怎么做?请帮忙!
【问题讨论】:
-
我知道我使用的标准程序没有这种行为。你确定要这样做吗?
-
@HovercraftFullOfEels:错误,是的,我已经实现了一些东西,比如 CTRL+S 用于保存。为了保存应该是CTRL + S + A,同样明智:)
-
@Jeffrey:感谢您的回复。无论如何,我很高兴不使用外部库:)
-
@Sepala:通常对于您描述的多次按下,它是一系列按下,而不是同时按下两个字母键。对于您的示例 ctrl-s 后跟“a”。
-
@Jeffrey:我使用 Eclipse。它在哪里显示这种行为?