Используя клавиатуру, чтобы переместить круг под углами в Java

Итак, у меня есть приложение, которое успешно перемещает шар (эллипс) влево, вправо, вверх или вниз в зависимости от того, какая кнопка клавиатуры нажимается. Однако я'Мне трудно заставить мяч двигаться под углом. Я'Я пытаюсь сделать это, сказав, что, если пользователь держит 2 клавиши со стрелками, мяч будет идти по диагонали. Например, если они нажимают левую клавишу и клавишу вверх, я хочу, чтобы мяч двигался в северо-западном направлении. Если кто-нибудь из вас увидит причину проблемы, яБуду очень признателен за помощь!

двигатель

class KeyClickListener implements KeyListener
        {
        public void keyPressed(KeyEvent e)
        {
            if (e.getKeyCode() == KeyEvent.VK_DOWN )
                {
                    component.moveCircle(1);
                }
            else if (e.getKeyCode() == KeyEvent.VK_UP)
                {
                    component.moveCircle(2);
                }
            else if (e.getKeyCode() == KeyEvent.VK_RIGHT)
                {
                    component.moveCircle(3);
                }
            else if (e.getKeyCode() == KeyEvent.VK_LEFT)
                {
                    component.moveCircle(5);
                }   
            //this is my attempt at telling whether or not the user was holding two keys
            else if (e.getKeyCode() == KeyEvent.VK_LEFT && e.getKeyCode() == KeyEvent.VK_UP)
                {
                    component.moveCircle(5);
                }
        }
        public void keyReleased(KeyEvent e){}
        public void keyTyped(KeyEvent e){}
    }

CircleComponent

 public void moveCircle(int w)
 {
    dir = w;
    if (dir == 1)
        {
            y+=20;
            repaint();
            if (y>=560)
                {
                    dir=2;
                }
        }
.  
.
.

else if (dir == 5)
        {
            x-=10;
            y-=10;
            repaint();
            if(x

Ответы на вопрос(2)

Ваш ответ на вопрос