coolanso
Messages postés75Date d'inscriptionjeudi 12 août 2010StatutMembreDernière intervention 5 juillet 2014
-
20 nov. 2013 à 18:33
KX
Messages postés16722Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention25 septembre 2023
-
20 nov. 2013 à 20:16
Bonsoir à tous,je viens à vous pour un souci qui pourrait sembler banale mais qui m'embête extrêmement. je voudrais afficher la valeur de mon JSpinner dans un JTextfield. j'y arrive mais la valeur récupérer ne me convient pas. j'obtiens : Wed Nov 20 18:10:58 CET 2013, alors que je voudrais obtenir 20/11/2013 comme l'affiche mon JSpiner. voici mon code:
// code du JSpinner SpinDatNaiss = new javax.swing.JSpinner(); SpinDatNaiss.setModel(new SpinnerDateModel()); Calendar calendar2 = Calendar.getInstance(); Date initDate2 = calendar2.getTime(); calendar2.add(Calendar.YEAR, -100); Date earliestDate2 = calendar2.getTime(); calendar2.add(Calendar.YEAR, 200); Date latestDate2 = calendar2.getTime(); SpinDatNaiss.setEditor(new JSpinner.DateEditor(SpinDatNaiss, "dd/MM/yyyy")); SpinnerModel dateModel2 = new SpinnerDateModel(initDate2, earliestDate2, latestDate2, Calendar.YEAR);
// code du bouton valider qui affiche la valeur du JSpinner dans le JTextfield private void CmdValiderActionPerformed(java.awt.event.ActionEvent evt) { Date val= (Date)SpinDatNaiss.getValue(); txtVal.setText(val.toString()); }
KX
Messages postés16722Date d'inscriptionsamedi 31 mai 2008StatutModérateurDernière intervention25 septembre 2023126 20 nov. 2013 à 20:16
Oui, c'est un peu compliqué car très complet, c'est pour ça que je t'ai mis le lien sur la documentation de Formatter.
Quelques exemples avec printf (qui utilise la même syntaxe) :
System.out.printf("Val=%d",17); // Val=17
Ici on a un argument, un paramètre, donc on met juste %d pour indiquer que c'est un entier.
Maintenant avec deux arguments, deux paramètres, il faut respecter l'ordre des paramètres (ici %d pour un entier, %s pour un String)
System.out.printf("%s=%d","Val",17); // Val=17
Si je veux permuter l'ordre des éléments, ou les utiliser plusieurs fois, je suis obligé d'indicer les arguments. Dans ce cas je dois intercaler 1$ et 2$ entre le % et le type
Maintenant les dates, dont le type est "t" suivi d'un autre indicateur pour savoir quel champ manipuler, d pour le jour, m pour le mois, y pour l'année :
Mais il y a beaucoup d'autres formats utilisables, notamment pour les heures.
L'avantage (à mon sens) d'utiliser Formatter, c'est que l'on peut combiner d'autres types de données, alors que le SimpleDateFormat ne manipules que des dates.
Un avantage par contre de SimpleDateFormat par contre est également de pouvoir faire la conversion dans l'autre sens, en lui donnant un String il peut en déduire la date, mais ce n'est pas ce qui t'intéresse ici.
jordane45
Messages postés37725Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention26 septembre 2023342 20 nov. 2013 à 18:40
Bonjour,
je pense qu'avec un SimpleDateFormat vous devriez pouvoir l'afficher comme vous le souhaitez.
quelque chose du genre :
// code du bouton valider qui affiche la valeur du JSpinner dans le JTextfield
private void CmdValiderActionPerformed(java.awt.event.ActionEvent evt) {
Date val= (Date)SpinDatNaiss.getValue();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");
String dateStr = simpleDateFormat.format(val);
txtVal.setText(val.toString());
}