Como ativar a ligação das teclas pressionadas?

As teclas de seta para este aplicativo precisam causar eventos de imprensa e lançamento independentemente do foco. Definir onKeyRelease true causa um evento de lançamento conforme o esperado, mas definir onKeyRelease false (código abaixo) parece não parar a repetição automática. Existe uma maneira de implementar a ligação de tecla para acionar uma vez quando a tecla de seta é pressionada e mantida?

Action right = new AbstractAction() {
    public void actionPerformed(ActionEvent e) {
        ...
    }
};
mainPanel.getInputMap(JPanel.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
        .put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0, false), "right");
mainPanel.getActionMap().put("right", right);

questionAnswers(2)

yourAnswerToTheQuestion