Hola:
Casi todos los componentes java tienen un Render que es la clase que se encarga de pintar el el dato que hay en el objeto. Estos Render por defecto suelen devolver un JLabel con un texto, que es lo que ves en los JList, JTable, etc. Sin embargo puedes cambiarlo y hacerte uno por defecto para que devuelva cualquier componente java con lo que tu quieras, por ejemplo, un JLabel con una icono.
Aqui tienes un ejemplo para cambiar el
render en un JTable. En el ejemplo una de las columnas es con iconos.
JList tiene su propio render cambiable, el JComboBox también, etc.
Se bueno.