Grazie per la risposta e mi scuso per non aver aperto un nuovo thread;
quindi non era una cosa poi così semplice! non ce l'avrei fatta con le mie conoscenze!!
Ecco come ho impostato il codice....
....ho messo il tuo codice nella Classe SpinnerOrario():
Così da creare i miei JSpinner per l'orario in altre Classi....codice:package utility; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import javax.swing.JSpinner; import javax.swing.SpinnerDateModel; public class SpinnerOrario extends JSpinner { /** * */ private static final long serialVersionUID = 1L; private class MySpinnerDateModel extends SpinnerDateModel { /** * */ private static final long serialVersionUID = 1L; private Date earliestDate, endDate; private int field; GregorianCalendar cal = new GregorianCalendar(); GregorianCalendar tempCal = new GregorianCalendar(); public Object getNextValue() { Date actualDate = this.getDate(); cal.setTime(actualDate); tempCal.setTime(actualDate); tempCal.add(field, 15); if (!tempCal.getTime().after(endDate)) { cal.add(field, 15); } return cal.getTime(); } // FINE METODO public Object getPreviousValue() { Date actualDate = this.getDate(); cal.setTime(actualDate); tempCal.setTime(actualDate); tempCal.add(field, -15); if (!tempCal.getTime().before(earliestDate)) { cal.add(field, -15); } return cal.getTime(); } // FINE METODO public MySpinnerDateModel(Date startDate, Date earliestDate, Date endDate, int field) { super(startDate, earliestDate, endDate, field); this.earliestDate = earliestDate; this.endDate = endDate; this.field = field; } // FINE COSTRUTTORE } // FINE PRIVATE CLASS public SpinnerOrario() { GregorianCalendar calendar = new GregorianCalendar(); calendar.setTime(new Date(0)); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); Date earliestDate = calendar.getTime(); calendar.set(Calendar.HOUR_OF_DAY, 24); calendar.set(Calendar.MINUTE, 0); Date latestDate = calendar.getTime(); calendar.set(Calendar.HOUR_OF_DAY, 7); calendar.set(Calendar.MINUTE, 0); Date startDate = calendar.getTime(); setModel(new MySpinnerDateModel(startDate, earliestDate, latestDate, Calendar.MINUTE)); setEditor(new JSpinner.DateEditor(this, "HH:mm")); } // FINE COSTRUTTORE } // FINE CLASSE
Pensavo di inserire un parametro per variare in base alle esigenze lo step dell'orario,codice:JSpinner orarioStart = new SpinnerOrario(); getFormat(orarioStart,4); // JSpinner, colonne orarioStart.addChangeListener(new ActionSpinner());
o altri parametri per variare i valori min, max e iniziale,
comunque, come sempre, il codice funziona alla grande.
Devo studiarmi il puntatore super,
non ho capito bene gli usi.
PS: Eclipse mi ha "suggerito" di cancellare questa riga:
Sempre gentilissimo, graziecodice:this.startDate = startDate;![]()

Rispondi quotando