IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Java Discussion :

colonne au format date


Sujet :

Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Septembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Collégien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2017
    Messages : 11
    Points : 9
    Points
    9
    Par défaut colonne au format date
    bonjour à tous,
    j'ai un tableau JTable avec plusieurs colonnes dont je voudrais rendre certaines colonnes au format date dont l'utilisateur pourrait selectionner une date.
    mais j'ai fais tot ce que je pouvais en vain. Et j'aimerais avoir votre appui SVP.
    merci d'avance

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Pour afficher une date formatée, il faut utiliser un format (Si la classe est java.time.LocalDate, un java.time.DateTimeFormatter, si la classe est java.util.Date, un java.text.DateFormat). Ensuite, il suffit de mettre dans le modèle les String résultantes du formatage dans le modèle ou de faire un modèle qui formate à la volée dans la méthode getValueAt, comme dans l'exemple suivant (avec java.time.LocalDate) :

    Code : 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    public class JTableDateExemple {
     
    	public static void main(String[] args) {
     
    		String[] colonnes = {"Label","Date 1","Date 2"};
     
    		Object[][] data = new Object[3][3];
     
    		for(int ligne = 0; ligne<data.length; ligne++) {
     
    			data[ligne][0] = "Ligne " + (ligne+1);
     
    			data[ligne][1] = LocalDate.of(2017, 04, ThreadLocalRandom.current().nextInt(30));
     
    			data[ligne][2] = LocalDate.now();
     
     
    		}
     
    		JFrame frame = new JFrame("Démo");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		DateTimeFormatter format = DateTimeFormatter.ofPattern("dd/MM/yyyy");
     
    		JTable table = new JTable(new DefaultTableModel(data, colonnes) {
    			@Override
    			public Object getValueAt(int row, int columnIndex) {
    				Object value = super.getValueAt(row, columnIndex);
    				switch(columnIndex) {
    				case 1:
    				case 2:
    					value = value==null?null:format.format((LocalDate)value);
    				}
    				return value;
    			}
     
    			@Override
    			public Class<?> getColumnClass(int columnIndex) {
    				return String.class;
    			}
     
    			@Override
    			public boolean isCellEditable(int row, int column) {
    				return false;
    			}
     
    		});
     
    		JPanel panel = new JPanel(new BorderLayout());
    		panel.add(new JScrollPane(table));
     
    		frame.add(panel);
     
     
    		frame.pack();
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
     
    	}
     
    }
    On peut aussi passer par le TableCellRenderer également, si tu as un besoin du type édition (faire de la saisie dans la JTable), mais c'est un peu plus compliqué.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Septembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Collégien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2017
    Messages : 11
    Points : 9
    Points
    9
    Par défaut colonne au format date
    merci pour ta réponse,
    En fait j'ai un tableau deux dimensions avec des cellules String et Double et je voudrais créer aussi une classe date pour rendre d'autres cellules de format date et d'autres de format heure.
    merci pour la compréhension

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Créer une classe date ? Pourquoi faire ? Tu as déjà suffisamment de classes pour représenter des dates (java.time.LocalDate par exemple). Et pour représenter des heures, java.time.LocalTime.

    Si tu as un tableau avec tes données que tu affiches dans une JTable et que tu dois afficher des données supplémentaires (date et heure, ou autre chose), soit tu fais un nouveau tableau qui fusionne le premier avec les données supplémentaires soit tu t'arranges pour que le modèle fasse cette fusion à la volée.

    Dans le modèle la méthode getValueAt(row, column) permet à la JTable de connaître la valeur située à la ligne d'index row et la colonne d'index column. L'implémentation est libre et on peut faire ce qu'on veut, comme par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public Object getValueAt(int row, int column) {
        if ( column<nbColumnTableau1 ) {
             // la donnée est dans le tableau 1
             return tableau1[row][column];
        }
        else {
             // la donnée est dans le tableau 2
             return tableau2[row][column-nbColumnTableau1];
        }
    }
    en combinant avec le code que je t'ai déjà donné, ou tout autre code qui exploite row, column et des classes de stockages de données, de conversion, etc, tu peux faire afficher à la JTable tout ce que tu veux.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Septembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Collégien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2017
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    j'arrive tjrs pas:
    voici ma classe Modele que tu m'avais aidé à corrigé avant:
    Code : 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    public class Model extends AbstractTableModel {
        private final List<Source> sources ;
        private static final File datasFile = new File("data.ser").getAbsoluteFile();
     
        private final String[] entetes = {"","","","","","","","","" };
     
     
    private static void saveToFile(List<Source> datas) {
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(datasFile))) {
            oos.writeObject(datas);
            System.out.println("Data save to file " + datasFile);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
     
    private static List<Source> loadFromFile() {
        List<Source> datas;
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(datasFile))) {
            datas = (List<Source>) ois.readObject();
            System.out.println("Data load from file " + datasFile);
        } catch (Exception e) {
            e.printStackTrace();
            datas = new ArrayList<>();
            datas.add(new Source(Sites.Choisissez,   new Double(0) , "", "", "", "", "", "", new Double(0)));
     
        }
        return datas;
    }
     
        public Model() {
            super();
    sources = loadFromFile();
     
     
        }
     
        public int getRowCount() {
            return sources.size();
        }
     
        public int getColumnCount() {
            return entetes.length;
        }
     
        public String getColumnName(int columnIndex) {
            return entetes[columnIndex];
        }
     
        public Object getValueAt(int rowIndex, int columnIndex) {
     
            switch(columnIndex){
                case 0:
                    return sources.get(rowIndex).getNir();
                case 1:
                    return sources.get(rowIndex).getKom();
                case 2:
                	 return sources.get(rowIndex).getCot();
     
                case 3:
                    return sources.get(rowIndex).setHor();
                case 4:
                    return sources.get(rowIndex).getSp();
                case 5 :
                	return sources.get(rowIndex).getHh();
                case 6:
                	return sources.get(rowIndex).getDhc();
                case 7:
                	return sources.get(rowIndex).getQda();
                case 8:
                	return sources.get(rowIndex).getTt();
                default:
                    return null;  
            }
        }
     
        @Override
        public Class getColumnClass(int columnIndex){
            switch(columnIndex){
            case 0:
            	return Sites.class;
            case 1:
            	return Double.class;
                case 2:
                    return String.class;
                case 3:
                    return String.class;
                case 4 :
                    return String.class;
                case 5:
                	return String.class;
                case 6:
                    return String.class;
                case 7:
                	return String.class;
                case 8 :
                	return Double.class;
                default:
                    return Object.class;
            }
        }
     
        @Override
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return true;  
        }
     
        @Override
        public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
     
            if(aValue != null){
                Source source = sources.get(rowIndex);
                switch(columnIndex){
                    case 0:
                        source.setNir((Sites)aValue);
                        break;
                    case 1:
                        source.setKom((Double)aValue);
                        break;
                    case 2:
                    	source.setCot((String)aValue);
     
                        break;
                    case 3:
                    	source.setHor((String)aValue);
                        break;
                    case 4:
                    	source.setSp((String)aValue);
                        break;
                    case 5:
                    	source.setHh((String)aValue);
                    	break;
                    case 6:
                    	source.setDhc((String)aValue);
                    	break;
                    case 7:
                    	source.setQda((String)aValue);
                    	break;
                    case 8:
                    	source.setTt((Double)aValue);
                    	break;
                }
            } saveToFile(sources);
        }
     
        public void addSource(Source source) {
            sources.add(source);
     
            fireTableRowsInserted(sources.size() -1, sources.size() -1);
            saveToFile(sources);
        }
     
        public void removeSource(int rowIndex) {
            sources.remove(rowIndex);
     
            fireTableRowsDeleted(rowIndex, rowIndex);
            saveToFile(sources);
        }
     
    }
    Et je voudrai que mes colonnes 3,4,5,6,7,8 soient de format date avec si possible une liste déroulante
    merci

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Déjà, de ce que je vois tes colonnes 3,4,5,6,7,8, il faudrait que ça soit de la date avant de chercher à les formater en date ! Alors que d'après ton modèle, c'est du String ou du Double !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
             case 3:
                    return String.class;
                case 4 :
                    return String.class;
                case 5:
                	return String.class;
                case 6:
                    return String.class;
                case 7:
                	return String.class;
                case 8 :
                	return Double.class;
    Du String à la limite, on pourrait se dire qu'on le convertit en date pour le reformater après (on pourrait se le dire, mais on n'évitera de le faire : si on gère des dates, on gère des dates). Mais du double ?

    A ce propos, je peux voir le code de la classe Source ?

    Quand à la liste déroulante c'est un autre souci, ou plutôt deux : déjà, une liste déroulante ça n'a d'intérêt que pour faire de la saisie. Or c'est nouveau déjà la saisie, tu n'en avais pas parlé jusque là. Du coup, ce serait mieux de passer par un TableCellRenderer (plus simple en tout cas), mais surtout d'avoir des données de type date, pas String ou Double.
    En plus, il faut prévoir un TableCellEditor pour faire la saisie. Et enfin, avec une liste déroulante, pour saisir de la date, c'est soit qu'on a une liste restreinte de dates (et ça reste pénible pour l'utilisateur, sauf si on en a deux ou trois), soit ce n'est pas le bon choix et un "date picker" serait plus indiqué.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Collégien
    Inscrit en
    Septembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Collégien
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Septembre 2017
    Messages : 11
    Points : 9
    Points
    9
    Par défaut colonne au format date
    Code : 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    public class Source implements Serializable{
    	private static final long serialVersionUID = 1L;
        private Sites sites;
        private Double kom;
        private String cot;
        private String hor;
        private String sp;
        private String hh;
        private String dhc;
        private String qda;
        private Double tt;
        public Source(Sites sites, Double kom, String cot, String hor, String sp, String hh, String dhc, String qda, Double tt) {
            super();
     
            this.sites = sites;
            this.kom = kom;
            this.cot = cot;
            this.hor = hor;
            this.sp = sp;
            this.hh = hh;
            this.dhc = dhc;
            this.qda = qda;
            this.tt = tt;
        }
     
        public Sites getNir() {
            return sites;
        }
     
        public void setNir(Sites sites) {
            this.sites = sites;
        }
     
        public Double getKom() {
            return kom;
        }
     
        public void setKom(Double kom) {
            this.kom = kom;
        }
     
        public String getCot() {
            return cot;
        }
     
        public void setCot(String cot) {
            this.cot = cot;
        }
     
        public String setHor() {
            return hor;
        }
     
        public void setHor(String hor) {
            this.hor = hor;
        }
     
        public String getSp() {
            return sp;
        }
     
        public void setSp(String sp) {
            this.sp = sp;
        }
     
        public String getHh() {
            return hh;
        }
     
        public void setHh(String hh) {
            this.hh = hh;
        }
        public String getDhc() {
            return dhc;
        }
     
        public void setDhc(String dhc) {
            this.dhc = dhc;
        }
        public String getQda() {
            return qda;
        }
     
        public void setQda(String qda) {
            this.qda = qda;
        }
        public Double getTt() {
            return tt;
        }
     
        public void setTt(Double tt) {
            this.tt = tt;
        }
    }

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Si je suis ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    case 3:
                    return sources.get(rowIndex).setHor();
                case 4:
                    return sources.get(rowIndex).getSp();
                case 5 :
                	return sources.get(rowIndex).getHh();
                case 6:
                	return sources.get(rowIndex).getDhc();
                case 7:
                	return sources.get(rowIndex).getQda();
                case 8:
                	return sources.get(rowIndex).getTt();
    et les getters correspondant dans la classe Source, ce sont tous des String. Je ne sais pas si ces informations (vu que le nom ne veut pas dire grand chose) sont vraiment des String, ou des dates, mais si ce sont vraiment des dates, il faut commencer par les stocker sous forme de date (java.time.LocalDate, ou java.util.Date), faire que les getters retourne ces informations dans ce type, et faire le modèle (comme j'ai indiqué dans ma première réponse), ou passer par un TableCellRenderer si ces colonnes sont éditables.

    Exemple avec le JCalendar de Toedter :

    Code : 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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    public class JTableDateExemple {
     
    	public static void main(String[] args) {
     
    		String[] colonnes = {"Label","Date 1","Date 2"};
     
    		Object[][] data = new Object[3][3];
     
    		for(int ligne = 0; ligne<data.length; ligne++) {
     
    			data[ligne][0] = "Ligne " + (ligne+1);
     
    			data[ligne][1] = LocalDate.of(2017, Month.APRIL, ThreadLocalRandom.current().nextInt(1,30));
     
    			data[ligne][2] = LocalDate.now();
     
     
    		}
     
    		JFrame frame = new JFrame("Démo");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		JTable table = new JTable(new DefaultTableModel(data, colonnes) {
     
    			@Override
    			public Class<?> getColumnClass(int columnIndex) {
    				switch(columnIndex) {
    				case 0:
    					return String.class;
    				case 1:
    				case 2:
    					return LocalDate.class;
    				default:
    					return Object.class;
    				}
    			}
     
    			@Override
    			public boolean isCellEditable(int row, int column) {
    				return column!=0;
    			} 
     
    		});
     
    		table.setDefaultRenderer(LocalDate.class, new LocalDateRenderer("dd/MM/yyyy"));
     
    		table.setDefaultEditor(LocalDate.class, new LocalDateEditor("dd/MM/yyyy"));
     
    		JPanel panel = new JPanel(new BorderLayout());
    		panel.add(new JScrollPane(table));
     
    		frame.add(panel);
     
     
    		frame.pack();
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
     
    	}
     
    	public static class LocalDateEditor extends AbstractCellEditor implements TableCellEditor {
     
     
    		private JDateChooser editor;
     
    		public LocalDateEditor(String pattern) { 
     
    	 		editor =  new JDateChooser();
    	 		editor.setDateFormatString(pattern);
    		}
     
    		static Properties convertResourceBundleToProperties(ResourceBundle resource) {
    		    Properties properties = new Properties();
     
    		    Enumeration<String> keys = resource.getKeys();
    		    while (keys.hasMoreElements()) {
    		      String key = keys.nextElement();
    		      properties.put(key, resource.getString(key));
    		    }
     
    		    return properties;
    		  }
     
    		@Override
    		public Object getCellEditorValue() {
    			return toLocalDate(editor.getDate());
    		}
     
    		private LocalDate toLocalDate(Object value) {
    			java.util.Date date = (java.util.Date)value;
    			if ( date!=null ) {
    				return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDate();
    			}
    			return null;
    		}
     
    		private Date toUtilDate(Object value) {
    			if ( value instanceof LocalDate ) {
    				LocalDate localDate = (LocalDate) value;
    				return Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());
    			}
    			return null;
    		}
     
    		@Override
    		public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row,
    				int column) {
    			editor.setDate(toUtilDate(value));
    			if ( isSelected ) {
    				editor.setForeground(table.getSelectionForeground());
    				editor.setBackground(table.getSelectionBackground());
    			}
    			else {
    				editor.setForeground(table.getForeground());
    				editor.setBackground(table.getBackground());
    			}
    			return editor;
    		}
     
    	}
     
    	public static class LocalDateRenderer extends DefaultTableCellRenderer {
     
    		private final DateTimeFormatter format;
     
    		public LocalDateRenderer(String pattern) {
    			this.format = DateTimeFormatter.ofPattern(pattern);
    		}
     
    		@Override
    		protected void setValue(Object value) {
    			if ( value instanceof LocalDate ) {
    				super.setValue(format.format((LocalDate)value));
    			}
    			else {
    				super.setValue(null);
    			}
    		}
     
    	}
     
    	/**
             * Le même pour java.util.Date  
             *
             */
    	public static class DateRenderer extends DefaultTableCellRenderer {
     
    		private final DateFormat format;
     
    		public DateRenderer(String pattern) {
    			this.format = new SimpleDateFormat(pattern);
    		}
     
    		@Override
    		protected void setValue(Object value) {
    			if ( value instanceof Date ) {
    				super.setValue(format.format((Date)value));
    			}
    			else {
    				super.setValue(null);
    			}
    		}
     
    	}
     
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Conversion d'une colonne au format date 20XX
    Par Jane92 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/04/2016, 17h37
  2. regroupement en une colonne pour format date ?
    Par tanaka59 dans le forum Excel
    Réponses: 6
    Dernier message: 19/05/2012, 12h40
  3. Réponses: 6
    Dernier message: 20/10/2010, 01h39
  4. [XL-2003] Modifier le le format Date sur toute les lignes d'une colonne
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/08/2010, 14h00
  5. Datagridview colonne au format date
    Par Timtom60 dans le forum VB.NET
    Réponses: 9
    Dernier message: 19/05/2010, 16h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo