我正在使用以下代码创建一个有效的热键。虽然除了使用VK_F8之外所有的功能键都工作,我有点惊讶。
String action = "ExecuteSQL";
mExecuteQueryBtn = new JButton("Execute query");
Action actionListener = new AbstractAction()
{
private static final long serialVersionUID = 1L;
@Override
public void actionPerformed(ActionEvent oEvent)
{
onExecuteQuery(oEvent);
}
};
KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.CTRL_MASK);
InputMap imp = mExecuteQueryBtn.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
imp.put(ks, action);
ActionMap actionMap = mExecuteQueryBtn.getActionMap();
actionMap.put(action, actionListener);
所以当我把它切换到:
KeyStroke ks = KeyStroke.getKeyStroke(KeyEvent.VK_F8, 0);
我没有收到任何关键事件。使用F1,F2等任何其他键都可以正常工作。我的密钥肯定有用,因为我也在其他应用程序中使用它,所以有人可以解释为什么F8会特别吗?