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

NetBeans Java Discussion :

Problème pour changer le format de ma date de Fri May 09 18:19:13. to 2014-05-09


Sujet :

NetBeans Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Problème pour changer le format de ma date de Fri May 09 18:19:13. to 2014-05-09
    Bonjour je vous explique ma situation j'ai cherché partout et j'ai essayé pas mal de chose mais j'arrive pas à avoir dans ma colonne Date la date au Format yyyy-MM-dd
    Quand je sélectionne ma colonne pour introduire une date avec JDateChooser ça marche mais aussitôt que je quitte la colonne le format devient Fri May 09 18:19:13.. mais si je retourne a la colonne et je clique une deuxième fois je vois le format est de yyyy-MM-dd voici l'image :

    voici mon Code: C'est la Classe CellDateEditor.java que je l'appele a partir de ma Fiche Forme1.java par :
    tblstudent.getColumn("Date").setCellEditor(new CellDateEditor());
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class CellDateEditor extends AbstractCellEditor implements TableCellEditor{
    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
     
     
       private static final long serialVersionUID = 1L;
       private JDateChooser dateChooser;
     
       public CellDateEditor() {
            dateChooser= new JDateChooser();
       }
     
     
        //Implement the one CellEditor method that AbstractCellEditor doesn't.
        @Override
        public Object getCellEditorValue() {        
               dateChooser.setDateFormatString ("yyyy-MM-dd");
                return dateChooser.getDate();
        }
     
        @Override
        public Component getTableCellEditorComponent(JTable table,Object value,boolean isSelected,int row,int column) { 
     
            dateChooser.setDate ((Date) value);         
            return dateChooser;
     
       }
     
     
     
    }
    je suis vraiment Bloqué et Merci pour votre aide
    Images attachées Images attachées  

  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,

    Une date (sous-entendu un objet de classe java.util.Date) n'a pas de format. Le format d'affichage que tu obtiens est le format par défaut utilisé par le rendu par défaut par toString() de l'objet Date. Pour obtenir un affichage de date formatté selon un format défini, on utilise un DateFormat (voir la classe SimpleDateFormat qui permet de choisir ce format par pattern par exemple), et pour pouvoir utiliser ce format pour afficher une Date dans une JTable, on utilise un TableCellRenderer. Tu peux affecter le renderer directement sur la colonne voulue (par l'intermédiaire de la classe TableColumn), ou l'associer à la classe Date (mais il faudra modifier le modèle pour indiquer que la colonne en question doit être considéré comme une colonne d'objets de classe Date, via la méthode getColumnClass(int).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Problème pour changer le format de ma date de Fri May 09 18:19:13. to 2014-05-09
    Bonjour Joel
    Merci pour la réponse mais je suis un débutant tu peux s'il te plait me donner un exemple selon le code que j'ai deja fais parce que moi selon les tutos que j'ai lu pour apprendre comment afficher ma date dans Jtable ça ma pris beaucoup de temp et j'ai pas pu trouvé la solution pour le format de date j'ai utiliser la Classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public class CellDateEditor extends AbstractCellEditor implements TableCellEditor
    puis
    public Object getCellEditorValue() et public Component getTableCellEditorComponent mais j'ai essayé parcontre SimpleDateFormat comme illustré dans le code:
    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
     
    import com.toedter.calendar.JDateChooser;
    import java.awt.Component;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import javax.swing.AbstractCellEditor;
    import javax.swing.JTable;
    import javax.swing.table.TableCellEditor;
     
     
    public class CellDateEditor extends AbstractCellEditor implements TableCellEditor{
     
        private static final long serialVersionUID = 1L;
    private final JDateChooser dateChooser;
     
    public CellDateEditor() 
        {
            dateChooser= new JDateChooser();
        }
     
     
        //Implement the one CellEditor method that AbstractCellEditor doesn't.
     @Override
        public Object getCellEditorValue() 
        {
                SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
                 String date = DATE_FORMAT.format(dateChooser.getDate());      
                return date;
            } 
        @Override
        public Component getTableCellEditorComponent(JTable table,Object value,boolean isSelected,int row,int column) 
        {            
            dateChooser.setDate ((Date) value); 
                   return dateChooser;
            }
    }
    Quand j'execute le Programme je rentre la date dans la colonne elle affiche le bon format même dans la deuxieme lignes mais si je retourne a la première ligne dans ma colonne j'ai le message d'erreur :
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at java.util.Calendar.setTime(Calendar.java:1770)
        at java.text.SimpleDateFormat.format(SimpleDateFormat.java:943)
        at java.text.SimpleDateFormat.format(SimpleDateFormat.java:936)
        at java.text.DateFormat.format(DateFormat.java:345)
        at javaapplication5.CellDateEditor.getCellEditorValue(CellDateEditor.java:57)
        at javax.swing.JTable.editingStopped(JTable.java:4724)
        at javax.swing.AbstractCellEditor.fireEditingStopped(AbstractCellEditor.java:141)
        at javax.swing.AbstractCellEditor.stopCellEditing(AbstractCellEditor.java:85)
        at javax.swing.plaf.basic.BasicTableUI$Handler.mousePressed(BasicTableUI.java:1010)
        at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280)
        at java.awt.Component.processMouseEvent(Component.java:6524)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
        at java.awt.Component.processEvent(Component.java:6292)
        at java.awt.Container.processEvent(Container.java:2234)
        at java.awt.Component.dispatchEventImpl(Component.java:4883)
        at java.awt.Container.dispatchEventImpl(Container.java:2292)
        at java.awt.Component.dispatchEvent(Component.java:4705)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4530)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
        at java.awt.Container.dispatchEventImpl(Container.java:2278)
        at java.awt.Window.dispatchEventImpl(Window.java:2739)
        at java.awt.Component.dispatchEvent(Component.java:4705)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746)
        at java.awt.EventQueue.access$400(EventQueue.java:97)
        at java.awt.EventQueue$3.run(EventQueue.java:697)
        at java.awt.EventQueue$3.run(EventQueue.java:691)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
        at java.awt.EventQueue$4.run(EventQueue.java:719)
        at java.awt.EventQueue$4.run(EventQueue.java:717)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:716)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
    
    Je n' arrive pas à Résoudre ce Problème .
    Merci

  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
    Tu obtiens cette erreur parce que la date dans le datechooser doit être null la première fois (pas de saisie) : mais tu n'avais pas besoin de modifier ton celleditor, mais simplement de créer un cellrenderer.

    Un TableCellEditor, c'est pour éditer, et à priori, le code de ton premier post devait fonctionner, et pour afficher on utilises un TableCellRenderer.

    Comme j'ai vu que tu es intervenu sur la dicussion de @nodogeid, je ne vais pas copier la réponse que je lui ai faite, et qui devrait te permettre de résoudre ton problème : regardes donc ici.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Bonjour JOEL
    Merci pour la réponse J'ai regardé ce que tu m'as dis mais j'ai pas compris ou je dois mettre mon code de TableCELLRENDRER:
    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
    public class DateCellRenderer extends DefaultTableCellRenderer {
     
        final DateFormat formatter=new SimpleDateFormat("yyyy/MM/dd");
     
        public DateCellRenderer () {
            super();
     
        }
     
    @Override
    public void setValue(Object value){
     
        if(value instanceof Date){setText(formatter.format(value));}
        else{setText("");}
     
     
    }
        }
    le Probleme C'est que moi j'utilise Table CellEditor comme je l'ai mentionné à ma premiere Question et j'appel ma table Cell Editor apartir de ma form1 par :
    tblstudent.getColumn("Date").setCellEditor(new CellDateEditor()); donc quand je vais mettre le code de DateCellRendere C'est comment ca va fonctionner et mon JDateChooser est dans TableCellEditor je suis vraiment melangé
    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
    Tu fais les deux : le TableCellEditor et le TableCellRenderer ne sont pas exclusifs. Tu as 2 classes, le TableCellEditor (que tu avais fait), et le TableCellRender, et tu mets le code d'affectation de l'un et de l'autre à la suite dans la méthode de création de la JTable.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Bonjour Joel
    Merci beaucoup
    C'est résolu Comme tu m'avais dis C'est très gentil

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

Discussions similaires

  1. Sed pour changer le format d'une date
    Par moctarim dans le forum Shell et commandes POSIX
    Réponses: 5
    Dernier message: 27/12/2012, 13h45
  2. Problème pour controler un format de date
    Par mohamed_75 dans le forum IHM
    Réponses: 3
    Dernier message: 18/10/2010, 14h19
  3. [AC-2000] macro pour changer le format d'une date
    Par zandeparis dans le forum VBA Access
    Réponses: 3
    Dernier message: 04/11/2009, 12h13
  4. Réponses: 12
    Dernier message: 23/06/2008, 16h44
  5. Problème pour changer le format des données
    Par Lize50 dans le forum SAS Base
    Réponses: 10
    Dernier message: 20/05/2008, 14h51

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