Java Swing: como animar / mover componentes sem problemas

Estou tentando descobrir como animar um componente de balanço para ir do ponto a ao ponto b. Aqui está um pequeno exemplo de código que faz um JPanel vermelho se mover da esquerda para a direita:


import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;

public class MovingSquareExample {

    private static final JPanel square = new JPanel();
    private static int x = 20;

    public static void createAndShowGUI(){
        JFrame frame = new JFrame();
        frame.getContentPane().setLayout(null);
        frame.setSize(500,500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.add(square);
        square.setBounds(20,200,100,100);
        square.setBackground(Color.RED);

        Timer timer = new Timer(1000/60,new MyActionListener());
        timer.start();
        frame.setVisible(true);
    }

    public static class MyActionListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent arg0) {
            square.setLocation(x++, 200);

        }

    }

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable(){
            @Override
            public void run(){
                createAndShowGUI();

            }
        });


    }

}

Funciona bem, só que eu pareço um pouco irregular. A moção do exemplo análogo com um quadrado arrastável (consulteComponentes arrastáveis no Java Swing) parece muito mais suave, então acredito que deve haver uma maneira de fazer isso parecer melhor. Qualquer sugestão será muito bem-vinda.

questionAnswers(1)

yourAnswerToTheQuestion