Ciao a tutti come faccio ad inserire al posto dei quadrati delle immagini diverse l'una dall'altra?

Posto il codice di tutte le classi:

La classe dove viene lanciato il programmino

codice:
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.util.LinkedList;

import javax.swing.JFrame;

public class Main {

   private JFrame frame;
   
   public Main() {
      frame =  new JFrame("Piove");
      frame.setSize(new Dimension(300,300));
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setLayout(new BorderLayout());
      frame.getContentPane().add(getFilledCPanel(),BorderLayout.CENTER);
      
      frame.setVisible(true);
   }
   
   private Component getFilledCPanel() {
      LinkedList<Characters> list = new LinkedList<Characters>();
      for (int i = 0; i < 4; i++) {
         list.add(new Characters((i*40),0));
      }
      return new CustomPanel(list);
   }

   public static void main(String[] args) {
      new Main();
   }
}
Il pannello dove vengono disegnati i quadrati

codice:
import javax.swing.JPanel;

public class CustomPanel extends JPanel {
   
   private LinkedList<Characters> list;
   
   public CustomPanel() {
      setSize(new Dimension(300,300));
      setBackground(Color.white);
   }

   public CustomPanel(LinkedList<Characters> a){
      this();
      list = a;
   }
   @Override
   protected void paintComponent(Graphics g) {
      super.paintComponent(g);
      for (Characters c : list) {
         c.draw(g);
      }
      repaint();
   }
}
e infine quella dove dovrei inserire l'immagini


codice:
import java.awt.Color;
import java.awt.Graphics;

public class Characters extends Thread {
   private int x;
   private int y;
   public Characters(int a,int b) {
      x = a;
      y = b;
      start();
   }
   
   @Override
   public void run() {
      for (int i = 0; i < 15; i++) {
         y += i;
         try {
            Thread.sleep(200);
         } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
         }
      }
   
   }

   public void draw(Graphics graphics){
      graphics.setColor(Color.BLACK);
      graphics.draw3DRect(x, y, 20, 20, false);
      //qui non riesco a compilare il codice per visualizzare le immagini
      //graphics.drawImage(.....)
   }
}
Grazie mille