Java KeyEvent movimiento cuadrado

Tengo un código en el que se activa un KeyEvent cuando se presiona cualquiera de las teclas de flecha. Esto a su vez hace que un cuadrado se mueva a través de la pantalla.

Ahora me he dado cuenta de que cuando presiono y mantengo presionada la tecla, el cuadrado se mueve, pero el tiempo después del movimiento inicial hacia los movimientos subsiguientes es bastante largo si entiendes lo que quiero decir. ¿Cómo podría ir disminuyendo esta vez?

¡Gracias!

import java.awt.*;
import javax.swing.*;
import squarequest.sprites.*;
import java.awt.event.*;


public class GamePanel extends JPanel{

    private final int HEIGHT = 400;
    private final int WIDTH = 600;
    private Square square;
    private Circle circle;


    public GamePanel(){

        addKeyListener(new DirectionListener());

        setBackground (Color.white);
        setPreferredSize(new Dimension(WIDTH, HEIGHT));
        setFocusable(true);

        square = new Square();


    }

    public void paintComponent(Graphics g){
        super.paintComponent(g);
        square.display(g);

    }

    public class DirectionListener implements KeyListener{


        @Override
        public void keyReleased(KeyEvent event) {}

        @Override
        public void keyTyped(KeyEvent event) {}


        @Override
        public void keyPressed(KeyEvent event) {

            switch(event.getKeyCode()){

            case KeyEvent.VK_UP:

                square.moveUp();
                break;
            case KeyEvent.VK_DOWN:

                square.moveDown();
                break;
            case KeyEvent.VK_LEFT:

                square.moveLeft();
                break;
            case KeyEvent.VK_RIGHT:

                square.moveRight();
                break;
            }
            repaint();

        }
    }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta