Ruch kwadratowy Java KeyEvent
Mam fragment kodu, w którym klawisz KeyEvent jest wyzwalany, gdy którykolwiek z klawiszy strzałek jest wciśnięty. To z kolei powoduje, że kwadrat przesuwa się po ekranie.
Teraz zauważyłem, że kiedy naciskam i przytrzymuję klawisz, kwadrat porusza się, ale czas po początkowym ruchu do kolejnych ruchów jest dość długi, jeśli rozumiesz o co mi chodzi? Jak mógłbym tym razem zmaleć?
Dzięki!
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();
}
}
}