KuroKami69 ha scritto:
Bene, visto che questo thread non viene usato da un po', vediamo di ridargli vita
Beh ok .. tanto tra un po' questo diventa il
highest hot topic of the year del forum
KuroKami69 ha scritto:
noto però che nonostante il valore di s cambi, non cambia l'aumento dello spinner. se ne può quindi dedurre che in qualche modo devo dirgli "hey guarda che il valore di s è cambiato, devi adattarti!"
Certo. Ma quando ci sono cose del genere, cerca anche di "ragionare".
Nel momento in cui viene eseguito
new SpinnerNumberModel(0, 0, 1000, s);
tu stai creando un nuovo oggetto SpinnerNumberModel e gli stai passando il valore che
s ha in QUEL MOMENTO. SpinnerNumberModel si terrà una
copia di questo valore da qualche parte al suo interno (in una sua variabile di istanza, chiaramente).
Se successivamente tu cambi SOLO il valore della tua variabile s, questo NON si riflette su altro!! SpinnerNumberModel non ne può "sapere" nulla di questa tua modifica.
Semplicemente DEVI usare il
setStepSize(Number stepSize) di SpinnerNumberModel. Nota che l'argomento è Number, perché SpinnerNumberModel tratta stepSize e value genericamente come Number. Ma non è un problema per te: int lo puoi automaticamente boxare a Integer e Integer è-un Number.
P.S. piccola nota:
JComboBox<Integer> pl = (JComboBox<Integer>) event.getSource();
non è sbagliato. Ma è "brutto". Perché quando ci sono di mezzo i
generics, un cast "parametrizzato" di quel tipo è sempre
unchecked ed hai un warning emesso dal compilatore e che puoi solo sopprimere.
Dato che la implementazione del ActionListener è specifica solo per quel tuo JComboBox, allora NON hai da usare il "source" né devi distinguere tra più source.
Ti basta fare riferimento a quel
pl che hai definito prima. Se sei almeno con Java 8 è a posto così. Se < Java 8 devi mettere quella variabile come
final.