Медленное движение с использованием метода paintComponent

Я решил переписать мою игру, используя Swing 'Техника рисования в методе paintComponent () (кто-то на SO фактически сказал мне использовать этот метод). Я решил использовать JPanel в качестве игры »База вместо холста. Моя предыдущая написанная игра использует Canvas, но игра не может отображаться на моем 64-битном рабочем столе, но может отображаться на моем 32-битном labtop, поэтому эту игру пришлось переписать.

Проблема в том, пока корабльПоскольку движение работает, рисунок кажется ужасно медленным (разве это не проблема с моим ноутбуком?) по сравнению с тем, что я делал раньше, когда использовал AWT 'Техника рисования с двойной буферизацией. Я провел целый день, но не мог понять, что могло заставить корабль двигаться быстрее.

   public class Ship extends JLabel implements KeyListener{

        private Image image;
        private boolean turnRight;
        private int x;
        private int y;
        private int speed = 5;
        private boolean turnLeft;

        public Ship(int x, int y)
        {
            this.x = x;
            this.y = y;

            try {
                image = ImageIO.read(new File("Ship/Ship.PNG"));
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            addKeyListener(this);

        }

        public Image getImage()
        {
            return image;
        }

        @Override
        public void keyPressed(KeyEvent e) {
            // TODO Auto-generated method stub

            if(e.getKeyCode() == KeyEvent.VK_RIGHT)
            {

                x += speed;
                setTurnRight(true);
                setTurnLeft(false);

            }
            else if(e.getKeyCode() == KeyEvent.VK_LEFT)
            {

                x -= speed;
                setTurnLeft(true);
                setTurnRight(false);
            }


            // redraw yourself
            repaint();

        }

        private void setTurnLeft(boolean turnLeft) {
            // TODO Auto-generated method stub
            this.turnLeft = turnLeft;
        }

        // swing custom painting 
        public void paintComponent(Graphics g)
        {
            if(x = 610)
            {
                x = 610;
            }

            g.drawImage(getImage(), x, y, null);

        }

        public void setTurnRight(boolean turnRight)
        {
            this.turnRight = turnRight;
        }

        public boolean getTurnLeft()
        {
            return turnLeft;
        }

        public boolean getTurnRight()
        {
            return turnRight;
        }

        @Override
        public void keyReleased(KeyEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void keyTyped(KeyEvent e) {
            // TODO Auto-generated method stub

        }

    }

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

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