Mam klasę która tworzy obiekt i go rysuje

import java.awt.*;

public class podstawka {
    public static int podstx = gra.szerokosc / 2 - gra.szerokosc / 10;
    public static int podsty = gra.wysokosc - 80;
    public static int szerokosc = gra.szerokosc / 5;
    public static int wysokosc =20;// gra.wysokosc / 20;


    public static void rysowanie(Graphics2D g) {


        g.setColor(Color.yellow);
        g.fillRect(podstawka.podstx, podstawka.podsty, podstawka.szerokosc, podstawka.wysokosc);
        ((Graphics2D) g).setStroke(new BasicStroke(2));
        g.setColor(Color.black);

        g.drawRect(podstawka.podstx, podstawka.podsty, podstawka.szerokosc, podstawka.wysokosc);
    }
    
}

i w innej klasie chce dodać KeyListener, żeby móc poruszać tym obiektem

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;


public class gra extends JComponent implements KeyListener, ActionListener {
    kulka kul;
    Animation animation;
    private kostki kos;


    public static int wysokosc=600;
    public static int szerokosc=800;
    public int ilekostek;
    public boolean gra=false;
    public int score=0;


    public gra(kulka kul,int ilewys,int ileszer){
        this.kul=kul;
        kos=new kostki(ileszer,ilewys);
        ilekostek=ileszer*ilewys;
        addKeyListener(this);

    }



    @Override
    public void paint(Graphics g) {
        g.setColor(Color.gray);
        g.fillRect(1, 1, szerokosc, wysokosc);
        super.paint(g);
        g.setColor(Color.cyan);
        g.fillOval(kul.x,kul.y,30,30);

        kos.rysowanie((Graphics2D) g);
        podstawka.rysowanie((Graphics2D) g);






        if(ilekostek<=0)
        {
            gra=false;
            kulka.vx=0;
            kulka.vy=0;
            g.setFont(new Font("",Font.BOLD, 20));
            g.drawString("Wygrana!",szerokosc/3,wysokosc/3);
        }


        if(kulka.y>wysokosc-60)
        {
            gra=false;
            kulka.vx=0;
            kulka.vy=0;
            g.setFont(new Font("",Font.BOLD, 20));
            g.drawString("Przegrana :(  Zdobyto: "+score, szerokosc/3,wysokosc/3);
            score=0;
        }

        if(kulka.y>podstawka.podsty-kulka.wielkosc && kulka.x<podstawka.podstx+(podstawka.szerokosc) && kulka.x>podstawka.podstx )
        {
            kulka.vy = -kulka.vy;
        }


        g.dispose();

    }





    private void checkColisions() {
        kul.kolizja(getWidth(),getHeight());
    }

    public void startAnimation() {
        animation = new Animation();
        Thread t = new Thread(animation);
        t.start();
    }



    public void stopAnimation() {
        animation.end_animation=true;
    }

    @Override
    public void actionPerformed(ActionEvent e) {



        repaint();
    }

    @Override
    public void keyTyped(KeyEvent e) {

    }

    @Override
    public void keyPressed(KeyEvent e) {
        if (e.getKeyCode() == KeyEvent.VK_RIGHT) {

            moveRight();

             
        }

        if (e.getKeyCode() == KeyEvent.VK_LEFT) {
            
            moveLeft();
              
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {

    }




    public void moveRight() {
        podstawka.podstx += 20;
    }

    public void moveLeft() {
        podstawka.podstx -= 20;
    }


    class Animation implements Runnable{

        private boolean end_animation = false;
        @Override
        public void run() {
            while(!end_animation){
                kul.move();
                checkColisions();
                repaint();
                try {
                    Thread.sleep(14);
                }catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}

mam jeszcze klase main

        import javax.swing.*;
        import java.io.IOException;

public class main {


    public static void main(String[] args) throws IOException {
        kulka kul = kulka.stworz(gra.szerokosc/3,gra.wysokosc/3);
        gra g = new gra(kul,10,5);
        JFrame okno = new JFrame("gra");

        okno.setContentPane(g);
        okno.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        okno.setBounds(500, 200,gra.szerokosc,gra.wysokosc);
        okno.setVisible(true);
        okno.setResizable(false);
        okno.requestFocus();


        g.startAnimation();
    }

}

i 2 inne klasy od rysowania innych obiektów.

Chciałem zrobic, żeby obiekt z klasy podstawka poruszał się w lewo i w prawo po naciśnięciu strzałek. Obejrzałem kilka poradników i nie widzę błędu