¿Cómo configurar la tecla presionando la tecla?

Las teclas de flecha para esta aplicación deben causar eventos de prensa y liberación independientes del foco. Establecer onKeyRelease verdadero provoca un evento de lanzamiento como se esperaba, pero establecer onKeyRelease falso (código a continuación) no parece detener la repetición automática. ¿Hay alguna forma de implementar el enlace de teclas para que se active una vez cuando la tecla de flecha se mantiene presionada?

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);

Respuestas a la pregunta(2)

Su respuesta a la pregunta