PDA

View Full Version : [JAVA] e JSpinner


carMAN
27-09-2003, 12:16
Devo aumentare la dimensione di un JSpinner.
Il JSpinner deve visualizzare interi ad 3 cifre ma invece me ne visalizza solo una!!!

Ho costruito il JSpinner nel seguente modo:

snm.setMinimum(new Integer(0));
snm.setValue(new Integer(parametri.getFrequenza())); snm.setStepSize(new Integer(1));
JSpinner frequenza= new JSpinner(snm);

dove snm è un SpinnerNumberModel

Ho attivato il listener adatto:ChangeListener e tutto funziona ma non riesco ad aumentare il numero di cifre visualizzate!!!

Ho provato a risettare le dimensioni:

System.out.println(frequenza.getSize());
frequenza.setSize(frequenza.getSize).width+10,
frequenza.getSize().height);
System.out.println(frequenza.getSize());

Anche se mi vengono stampate le nuove dimensioni, Il JSpinner continua a visualizzare una sola cifra..

P.S. il JSpinner si trova in un FlowLayout.

Grazie per l'aiuto

PGI
27-09-2003, 18:23
Un oggetto JSpinner computa la dimensione in base alla cifra massima che mi pare manchi nel tuo SpinnerNumberModel.

Se non puoi indicarla, poichè usi un FLowLayout puoi decidere la dimensione del componente attraverso il metodo JSpinner.setPreferredSize(Dimension).

setSize(Dimension) e l'omologo (int int) modificano i valori width e height di un Component ma non apportano modifiche al layout corrente(cioè in apparenza non cambia nulla).

setPreferredSize(...) agisce sul LayoutManager corrente (ma solo in certi casi, uno dei quali è proprio la presenza di un FlowLayout).

La via più semplice è comunque nell'indicare un valore massimo per lo SpinnerModel.

Ciao.

P.S.

In realtà anche setSize() cambia il layout ma non in modo tale da modificare il layout...direi che è chiaro, no? :D

carMAN
27-09-2003, 20:36
Ti ringrazio moltissimo! sei stato davvero chiaro proprio come deve essere un buon maestro!!!!!!!

Grazie di nuovo. Ciao Carlo