2

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

4

0 回答 0