Also das grundsätzlich solltest du "Zeichnen" und "Bewegen" als 2 verschiedene Sache betrachten. Das "Zeichen" hast du bereits gelernt, nämlich in der paintComponent(Graphics)
Methode. Jetzt darfst du das Bild nicht immer an gleicher Position zeichen - also führst du 2 Variablen (zB x,y) für das Bild ein, welche die aktuelle Position des Bildes beschreiben. [hast du bereits]
Diese Variablen (oder nur eine von beiden (?) ) müssen im Timer jeweils inkrementiert (hochgezählt) werden. Nach dem hochzählen rufst du auf der Komponente, wo die Bilder gezeichnet werden, die repaint()
Methode auf, damit die Bilder erneut, an der aktualisierten Koordinate, gezeichnet werden.
Wenn du es ganz gut machen willst, packst du das Bild und die Koordinaten in eine eigene Klasse ... dann brauchst du diese komische Var Klasse nicht mehr. static Variablen solltest du sowieso kaum bis nie (gerade am Anfang) benutzen .. das braucht man zu 99% nicht und zeugt von schlechtem Design. static hat eben nichts mit OOP zu tun .. und Java ist nun mal OOP.