Utilizar duas vezes o mesmo método

Boa tarde a todos.
Estou fazendo um jogo e preciso fazer uma gambiarra que me permita utilizar dois métodos .repaint() abstrato de Graphics na mesma classe.

Tenho uma classe GamePanel que extends JPanel no construtor dela fiz o seguinte: this.gs = new paintGraphics(); this.add(gs); new Thread(new Runnable() { @Override public void run() { while (true) { actionPerformed(null); // a raquete desenhada com velocidade 5 try { Thread.sleep(5); } catch (InterruptedException e) { e.getMessage(); } if (TECLA FOR PRESSIONADA){ this.gs.repaint(); // a bola é redesenhada e fica com outra velocidade try { Thread.sleep(10); } catch (InterruptedException e) { e.getMessage(); } } } } }).start();
O gs que aparece um pouco antes de eu iniciar a thread é a instancia da classe: private class paintGraphics extends JPanel { @Override public void paintComponent(Graphics g) { ball.sprite(g); // desenha a bola na tela g.dispose(); } @Override public void repaint() { super.repaint(); } }Voltando a classe GamePanel tenho os métodos:[code] public void actionPerformed(ActionEvent e) {
repaint();
}

@Override
public void paintComponent(Graphics g) { 
    paddle.paintSprite(g); // desenha a raquete na tela
    g.dispose();
}[/code]

E o objetivo é desenhar dois elementos com velocidades diferentes por isso preciso separar os métodos.

A questão em si não é complicada, mas, para não ficar confuso a classe completa fica dessa forma:

[code]
import javax.swing.JPanel;

public class GamePanel extends JPanel {

Paddle paddle;
Ball ball;
paintGraphics gs;

public GamePanel() {
    this.gs = new paintGraphics();
    this.add(gs);

    new Thread(new Runnable() {

        @Override
        public void run() {
            while (true) { // repete a thread da bola "sempre" e/ou da raquete "se a tecla for pressionada"
                actionPerformed(null); // a raquete desenhada com velocidade 5  
                try {
                    Thread.sleep(5); 
                } catch (InterruptedException e) {
                    e.getMessage();
                }
                if ("TECLA FOR PRESSIONADA")  {
                    this.gs.repaint(); // a bola é redesenhada e fica com outra velocidade 
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        e.getMessage();
                    }
                }
            }
    }).start();
}

private class paintGraphics extends JPanel {

    @Override
    public void paintComponent(Graphics g) {
        ball.sprite(g);
        g.dispose();
    }

    @Override
    public void repaint() {
        super.repaint(); //1 //
    }
}


public void actionPerformed(ActionEvent e) {
    repaint(); //2 //desenha os elementos do método abaixo
}

@Override
public void paintComponent(Graphics g) { 
    paddle.paintSprite(g);
    g.dispose();
}

}
[/code]Então como posso utilizar os dois métodos .repaint() sem conflitos?
Agradeço quem me der sugestões.