Allora, ho provato a fare così:

codice:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JList;
import javax.swing.JLabel;
import javax.swing.ListCellRenderer;
import javax.swing.ListSelectionModel;
import java.awt.Color;
import java.awt.Component;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class testlist extends JFrame
{
	String[] stringlist = {"uno", "due", "tre", "quattro", "cinque", "sei"};
	JList list = new JList (stringlist);
	renderer rend;
	JPanel panel = new JPanel();
	JButton click = new JButton ("click");
	boolean flag = false;
	
	public testlist()
	{
		super ("testlist");
		setSize (200, 200);
		setLocationRelativeTo (null);
		setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
		
		click.addActionListener
		(
			new ActionListener()
			{
				public void actionPerformed (ActionEvent event)
				{
					flag = !flag;
				}
			}
		);
		
		rend = new renderer();
		list.setCellRenderer (rend);
		list.setSelectionMode (ListSelectionModel.SINGLE_SELECTION);
		panel.add (new JScrollPane (list));
		panel.add (click);
		
		add (panel);
		
		setVisible (true);
	}
	
	class renderer extends JLabel implements ListCellRenderer
	{
		renderer()
		{
			setOpaque (true);
		}
		
		public Component getListCellRendererComponent (JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
		{
	        setText(value.toString());
			if (flag)
			{
				setBackground (isSelected ? Color.RED : Color.WHITE);
				setForeground (isSelected ? Color.WHITE : Color.RED);
			}
			else
			{
				setBackground (isSelected ? Color.BLUE : Color.WHITE);
				setForeground (isSelected ? Color.WHITE : Color.BLUE);
			}
			return this;
		}
	}
	
	public static void main (String[] args)
	{
		new testlist();
	}
}
Ma alla pressione del pulsante, i cambiamenti non sono immediati, e quando provo a cliccare un elemento della lista, vengono cambiati i colori di tutti gli elementi a partire dall'elemento selezionato in precedenza fino all'elemento correntemente selezionato