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![]()







Répondre avec citation


La plupart des réponses à vos questions sont déjà dans les
Plus sérieusement, je dois avouer que je n'ai pas compris tout le code, notamment ce qui touche au AbstractFormatter. Mais du peu que je comprends, je dois pouvoir faire la même chose avec Calendar plutôt que java.util.Date ?


Partager