Bonjour à tous !
Pour un programme, j'ai une classe JFormattedTextField pour des dates :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package modele; import javax.swing.*; import java.sql.Date; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.ZoneId; import java.time.ZoneOffset; import java.time.ZonedDateTime; public class DateTextField extends JFormattedTextField { public DateTextField() { super(new SimpleDateFormat("dd/MM/yyyy")); } public DateTextField(LocalDate d) { super(new SimpleDateFormat("dd/MM/yyyy")); if (d != null) this.setValue(Date.from(d.atStartOfDay().toInstant(ZoneOffset.ofHours(2)))); } public LocalDate getDateValue() { Object value = this.getValue(); if ( value instanceof Date ) {// ici java.sql.Date à cause de l'import return ((Date)value).toLocalDate(); } else if ( value instanceof java.util.Date ) { ZonedDateTime zdt = ZonedDateTime.ofInstant ( ((java.util.Date )value).toInstant(), ZoneId.systemDefault() ); return zdt.toLocalDate(); } else { return null; } } }
Elle fonctionne très bien lorsque je mets une date. Cependant, je voudrais qu'une saisie de type "12/02" soit "demi valide", c'est-à-dire qu'elle soit directement changée en "12/02/annéeEnCours" au lieu d'être effacée.
Comment faire ?
Merci d'avance de vos réponses
Partager