Domanda
Ho creato la seguente classe che si estende JSpinner
a iterare gg / mm / valori yyy.
public class DateSpinner extends JSpinner{
Calendar calendar = new GregorianCalendar();
public DateSpinner(){
super();
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date now = calendar.getTime();
calendar.add(Calendar.DAY_OF_YEAR, -2);
Date startDate = calendar.getTime();
calendar.add(Calendar.YEAR, 100);
Date endDate = calendar.getTime();
SpinnerDateModel dateModel = new SpinnerDateModel
( now , startDate , endDate , Calendar.DAY_OF_MONTH );
setModel(dateModel);
JFormattedTextField tf =
((JSpinner.DefaultEditor)getEditor()).getTextField();
DefaultFormatterFactory factory =
(DefaultFormatterFactory)tf.getFormatterFactory();
DateFormatter formatter = (DateFormatter)factory.getDefaultFormatter();
// Change the date format to only show the hours
formatter.setFormat(new SimpleDateFormat("dd/MM/yyyy"));
}
}
Il mio problema è quando ho impostato il suo valore utilizzando
Date today = new Date();
spinner.setValue(today);
ottengo la data compresa l'ora e giorno della settimana. Se tocco il filatore si formatta in base al formato ho impostato. Come posso ottenere il formato inizialmente voglio essere mostrato?
Soluzione
Usa built-in editor, come segue
spinner.setEditor(new JSpinner.DateEditor(spinner, "dd/MM/yyyy"));
Altri suggerimenti
Inoltre, come nota a margine - ogni volta che si lavora con i calendari, le date e gli orari vorrei considerare l'utilizzo di Joda Tempo .
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow