Ed infatti così è.
Ho fatto una prova, prendendo pari pari la tua classe del renderer e usandola in questa:
codice:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class MioFrame extends JFrame {
private JList listSpinner;
public MioFrame() {
Container c = getContentPane();
c.setLayout( new BorderLayout() );
listSpinner = new JList( creaValori() );
listSpinner.setCellRenderer(new SpinnerRenderer());
JScrollPane jsp = new JScrollPane( listSpinner );
c.add(jsp, BorderLayout.CENTER);
setDefaultCloseOperation( EXIT_ON_CLOSE );
setSize(800, 600);
setTitle("Prova Spinner");
setLocationRelativeTo( null );
setVisible( true );
}
private Integer[] creaValori() {
return new Integer[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
}
public static void main(String[] args) {
MioFrame mf = new MioFrame();
}
}
In console vedo stampati tutti i valori (in realtà, una sfilza di zeri perchè lo spinner non viene mai valorizzato) per sole 2 volte (evidentemente, vengono stampate al momento della creazione con la finestra non visibile e una seconda quando la finestra diventa visibile).
Ciao.