Saludos, en la api del JList hay un ejemplo de como colocarle iconos y texto al JList, es sencillo, solo tienes que hacer una clase que implemente ListCellRenderer. El siguiente ejemplo lo tome de la api, te lo voy a comentar un poco:
Haz una clase que implemente ListCellRenderer:
class MyCellRenderer extends JLabel implements ListCellRenderer {
final static ImageIcon longIcon = new ImageIcon("icono.gif"); // el icono
// el unico metodo definido por ListCellRenderer es este:
public Component getListCellRendererComponent(
JList list,
Object value, // value to display
int index, // cell index
boolean isSelected, // is the cell selected
boolean cellHasFocus) // the list and the cell have the focus
{
String s = value.toString();
setText(s);
setIcon(longIcon);
if (isSelected) {
setBackground(list.getSelectionBackground());
setForeground(list.getSelectionForeground());
}
else {
setBackground(list.getBackground());
setForeground(list.getForeground());
}
setEnabled(list.isEnabled());
setFont(list.getFont());
setOpaque(true);
return this;
}
}
luego desde donde tengas el JList aplicale el metodo setCellRenderer:
ejemplo:
String[] data = {"one", "two", "three", "four"};
JList dataList = new JList(data);
dataList.setCellRenderer(new MyCellRenderer());
Y Listo ya lo tienes. NOTA EL EJEMPLO LO TOME DE LAS API, SOLO LO MODIFIQUE UN POCO.