Самый простой способ (хотя и требует много памяти) - использовать MutableImage и рисовать его с отрицательными координатами y.
Изменяемое изображение - это просто новое изображение (ш, ч).
Затем вы получаете его графический контекст, используя myImage.getGraphics()
, и рисуете с этим графическим объектом. Он служит закадровым буфером.
Чем в краске (Графика г) звоните:
g.drawImage(0,y,...);
, где вы зацикливаете значение y на каждом системном вызове для рисования.
(не блокируйте рисование! - каждый вызов - один кадр, и вы делаете покадровую анимацию
сделать цикл анимации из другого потока, где вы уменьшаете y, чем вызываете repaint () и sleep).