Utilizando un GIF animado en un JComboBox

Estoy tratando de usar iconos animados (GIF) en un JComboBox.

Como DefaultListCellRenderer se basa en JLabel, ImageIcons se admite directamente al colocarlos en el ComboBoxModel.

Sin embargo, esto no funciona con GIF animados.

En el menú desplegable no se muestran a menos que estén seleccionados (los GIF funcionan cuando se usan en un JLabel normal)

El código para llenar el cuadro combinado es sencillo:

ImageIcon[] data = new ImageIcon[4];
data[0] = new ImageIcon("icon_one.gif");
data[1] = new ImageIcon("icon_two.gif");
data[2] = new ImageIcon("icon_three.gif");
data[3] = new ImageIcon("icon_four.gif");
ComboBoxModel model = new DefaultComboBoxModel(data);
setModel(model);

icon_one.gif es el estático y se muestra sin ningún problema. Los otros están animados. (Las imagenesso cargado correctamente porque si asigno cualquiera de esos iconos a un JLabel directamente, se muestran muy bien)

Traté de usar mi propio ListCellRenderer basado en un JPanel (inspirado en la respuesta a esta pregunta:Java GIF animado sin usar un JLabel).

Eso funciona unpoc mejor pero tampoco ideal. Los iconos solo se muestran si muevo el mouse sobre ellos mientras se muestra el menú desplegable. Así que supongo que es un problema reparador, aunque no sé dónde

Esta es la parte de mi JPanel que implementa la interfaz ListCellRenderer.

public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
{
  this.image = ((ImageIcon)value).getImage();
  if (isSelected)
  {
    setBackground(list.getSelectionBackground());
    setForeground(list.getSelectionForeground());
  }
  else
  {
    setBackground(list.getBackground());
    setForeground(list.getForeground());
  }
  revalidate();
  repaint();

  return this;
}

a llamada a revalidar () y volver a pintar () se inspiró al mirar el código de JLabel.setIcon ()

El método paint () también es sencillo:

public void paintComponent(Graphics g)
{
  super.paintComponent(g);
  if (image != null)
  {
    g.drawImage(image, 0, 0, this);
  }
}

¿Algunas ideas? Realmente no necesito que esos iconos estén animados en el menú desplegable (aunque eso sería bueno), pero al menos me gustaría ver las imágenes estáticas.

Respuestas a la pregunta(2)

Su respuesta a la pregunta