Question
J'ai créé la classe suivante qui s'étend JSpinner
itérer sur jj / mm / valeurs 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"));
}
}
Mon problème est quand je mis sa valeur à l'aide
Date today = new Date();
spinner.setValue(today);
Je reçois la date, y compris l'heure et le jour de la semaine. Si je touche la fileuse il formate selon le format que je mets. Comment puis-je obtenir d'abord le format que je veux qu'on?
La solution
L'utilisation intégrée des éditeurs, comme suit
spinner.setEditor(new JSpinner.DateEditor(spinner, "dd/MM/yyyy"));
Autres conseils
En outre, comme une note de côté - chaque fois que vous travaillez avec des calendriers, des dates et des heures j'envisager d'utiliser Joda Temps .
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow