我正在使用以下代码创建一个热键,该热键有效。尽管除了我使用 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 会很特别?