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

Collection et Stream Java Discussion :

Cannot format given Object as a Date


Sujet :

Collection et Stream Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 4
    Points
    4
    Par défaut Cannot format given Object as a Date
    Bonjour à tous, c'est mon premier post sur ce forum, j'espère ne pas me tromper au niveau de l'emplacement !

    Voila, je viens à vous car pour cette fin d'année, je dois rendre un projet en Java. Voila mon problème : Je veux afficher un listing de mes véhicules (présent dans la BD liée au projet), je fais donc ma requête SQL, jusque là tout va bien. Le programme se lance très bien, mais quand je clique sur l'onglet "Listing", la ça plante et ça me met ceci comme erreur :

    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
    Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Cannot format given Object as a Date
    	at java.text.DateFormat.format(DateFormat.java:310)
    	at java.text.Format.format(Format.java:157)
    	at javax.swing.JTable$DateRenderer.setValue(JTable.java:5368)
    	at javax.swing.table.DefaultTableCellRenderer.getTableCellRendererComponent(DefaultTableCellRenderer.java:257)
    	at javax.swing.JTable.prepareRenderer(JTable.java:5723)
    	at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2114)
    	at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:2016)
    	at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1812)
    	at javax.swing.plaf.ComponentUI.update(ComponentUI.java:161)
    	at javax.swing.JComponent.paintComponent(JComponent.java:780)
    	at javax.swing.JComponent.paint(JComponent.java:1056)
    	at javax.swing.JComponent.paintChildren(JComponent.java:889)
    	at javax.swing.JComponent.paint(JComponent.java:1065)
    	at javax.swing.JViewport.paint(JViewport.java:728)
    	at javax.swing.JComponent.paintChildren(JComponent.java:889)
    	at javax.swing.JComponent.paint(JComponent.java:1065)
    	at javax.swing.JComponent.paintChildren(JComponent.java:889)
    	at javax.swing.JComponent.paint(JComponent.java:1065)
    	at javax.swing.JComponent.paintChildren(JComponent.java:889)
    	at javax.swing.JComponent.paint(JComponent.java:1065)
    	at javax.swing.JComponent.paintChildren(JComponent.java:889)
    	at javax.swing.JComponent.paint(JComponent.java:1065)
    	at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
    	at javax.swing.JComponent.paintChildren(JComponent.java:889)
    	at javax.swing.JComponent.paint(JComponent.java:1065)
    	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
    	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
    	at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
    	at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
    	at javax.swing.JComponent._paintImmediately(JComponent.java:5158)
    	at javax.swing.JComponent.paintImmediately(JComponent.java:4969)
    	at javax.swing.RepaintManager$4.run(RepaintManager.java:831)
    	at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
    	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
    	at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
    	at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
    	at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
    	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
    	at java.awt.EventQueue.access$500(EventQueue.java:97)
    	at java.awt.EventQueue$3.run(EventQueue.java:709)
    	at java.awt.EventQueue$3.run(EventQueue.java:703)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
    	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 ne sais pas s'il vous faut du code, si oui, je me ferais un plaisir de vous le montrer. J'espère que quelqu'un pourra m'aider..

    Cordialement, Florian.

  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,

    Il y a une colonne dans la JTable qui est typée java.util.Date, mais il y a une donnée dans cette colonne qui n'est pas du type Date. Lorsque le renderer associé à la colonne essaye de formater la date pour l'afficher, il dit qu'il ne peut pas parce que ce n'est pas une date.
    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
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Bonjour et merci pour votre réponse si rapide !

    J'ai beau chercher, je ne vois vraiment pas où j'ai fais mon erreur... Est-ce que je peux vous envoyer mon projet en .rar ? Un avis extérieur est toujours le bienvenue..

  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
    Tout le projet ne sera pas utile. Mets-nous dans ton prochain message les sources du :
    1. du Tablemodel de la table
    2. de l'initialisation de la JTable, si tu y affectes des renderers explicitement
    3. le code avec la requête SQL, le parcours du ResultSet, et le chargement des données dans la JTable
    4. le descriptif de la table (les colonnes et leur type)


    Déjà, première question : est-ce que tu as défini une colonne de type Date ? A quelle colonne dans ta requête cette colonne correspond-t-elle ? La colonne correspondant dans la table est-elle du type Date ?
    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
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    J'ai vu des postes avec du code copié mais je n'ai pas trouvé comment faire autrement..

    1) Tablemodel de la table

    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
    public class AllVehicule extends AbstractTableModel {
     
        private ArrayList<String> nomsColonnes = new ArrayList<String>();
        private ArrayList<Vehicule> contenu = new ArrayList<Vehicule>();
     
        public AllVehicule(ArrayList<Vehicule> voiture)
        {
            contenu = voiture;
            nomsColonnes.add("NumChassis");
            nomsColonnes.add("Plaque");
            nomsColonnes.add("Carburant");
            nomsColonnes.add("Societe");
            nomsColonnes.add("Cylindree");
            nomsColonnes.add("Lpg");
            nomsColonnes.add("DateDebutReparation");  
        }
     
        @Override
        public int getColumnCount()
        {
            return nomsColonnes.size();
        }
     
        public int getRowCount()
        {
            return contenu.size();
        }
     
        @Override
        public String getColumnName(int col)
        {
            return nomsColonnes.get(col);
        }
     
        @Override
        public Object getValueAt(int row, int col)
        {
            Vehicule voiture = contenu.get(row);
            switch(col)
            {
                case 0 : return voiture.getNChassis();
                case 1 : return voiture.getPlaque();
                case 2 : return voiture.getCarburant();
                case 3 : return voiture.getCylindree();
                case 4 : return voiture.getSociete();
                case 5 : return voiture.getLpg();
                case 6 : return voiture.getDateDebRepa();
                default : return null;
            }
        }
     
        @Override
        public Class getColumnClass(int col)
        {
            Class c;
            switch(col)
            {
                case 0 : c = String.class;
                    break;
                case 1 : c = String.class;
                    break;
                case 2 : c = String.class;
                    break;
                case 3 : c = String.class;
                    break;
                case 4 : c = Integer.class;
                    break;
                case 5 : c = Boolean.class;
                    break;
                case 6 : c = Date.class;
                    break;
                default : c = String.class;
            }
            return c;
        }
    }
    2) Initialisation de la JTable

    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
    public PanelListing()
        {
            this.setLayout(new BorderLayout());
     
            controle = new ApplicationControlleur();
     
            this.setLayout(new BorderLayout());
            this.setBorder(BorderFactory.createTitledBorder("Listing des véhicules"));
     
            try {
                voiture = new AllVehicule(controle.listingVehicule());
            } catch (SQLException ex) {
                Logger.getLogger(PanelListing.class.getName()).log(Level.SEVERE, null, ex);
            } catch (NamingException ex) {
                Logger.getLogger(PanelListing.class.getName()).log(Level.SEVERE, null, ex);
            } catch (AjoutException ex) {
                Logger.getLogger(PanelListing.class.getName()).log(Level.SEVERE, null, ex);
            }
     
            tableListing = new JTable(voiture);
     
            //TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(tableListing.getModel());
            //tableListing.setRowSorter(sorter);
     
            barreDefilante = new JScrollPane(tableListing);
     
            this.add(tableListing);
            this.add(barreDefilante, BorderLayout.CENTER);
     
        }
    3) Code la requète

    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
    public class Listing implements InterfaceListing {
     
        @Override
        public ArrayList<Vehicule> listingVehicule() throws SQLException, NamingException, AjoutException
        {
            ArrayList<Vehicule> arrayVehicule = new ArrayList<Vehicule>();
     
            Connection connexion = SingletonConnection.connexionBD();
            String requeteSQL = "SELECT numChassis, cylindree, plaque, carburant, dateDebRepa, lpg, societe from Vehicule";       
            PreparedStatement prepStat = connexion.prepareStatement(requeteSQL);
            ResultSet donnees = prepStat.executeQuery();
            while(donnees.next())
            {
     
                String numChassis = donnees.getString(1);
                int numeroCyl = donnees.getInt(2);
                Integer cylindre = new Integer(numeroCyl);
                String plaque = donnees.getString(3);
                String carburant = donnees.getString(4);
                java.sql.Date dateDeb = donnees.getDate(5);
                GregorianCalendar dateReparation = new GregorianCalendar();
                dateReparation.setTime(dateDeb);
                boolean lpgBool = donnees.getBoolean(6);
                Boolean lpg = new Boolean(lpgBool);
                String societe = donnees.getString(7);
     
                arrayVehicule.add(new Vehicule(numChassis, plaque, carburant, societe, cylindre, lpg, dateReparation));
            }
     
            return arrayVehicule;
        }
    }
    4) Nom : table vehicule.png
Affichages : 1397
Taille : 20,8 Ko

    Oui j'ai définis une colonne de type Date. J'ai bien vérifié que les requètes, les arguments du constructeur Véhicule, et l'ordre des colonnes correspondent bien.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    J'ai remarqué un soucis dans l'ordre dans la classe AllVehicule, je l'ai donc modifié, ce qui donne ceci :

    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
    public class AllVehicule extends AbstractTableModel {
     
        private ArrayList<String> nomsColonnes = new ArrayList<String>();
        private ArrayList<Vehicule> contenu = new ArrayList<Vehicule>();
     
        public AllVehicule(ArrayList<Vehicule> voiture)
        {
            contenu = voiture;
            nomsColonnes.add("NumChassis");
            nomsColonnes.add("Cylindree");
            nomsColonnes.add("Plaque");
            nomsColonnes.add("Carburant");
            nomsColonnes.add("DateDebutReparation");
            nomsColonnes.add("Lpg");
            nomsColonnes.add("Societe");
        }
     
        @Override
        public int getColumnCount()
        {
            return nomsColonnes.size();
        }
     
        public int getRowCount()
        {
            return contenu.size();
        }
     
        @Override
        public String getColumnName(int col)
        {
            return nomsColonnes.get(col);
        }
     
        @Override
        public Object getValueAt(int row, int col)
        {
            Vehicule voiture = contenu.get(row);
            switch(col)
            {
                case 0 : return voiture.getNChassis();
                case 1 : return voiture.getCylindree();
                case 2 : return voiture.getPlaque();
                case 3 : return voiture.getCarburant();
                case 4 : return voiture.getDateDebRepa();
                case 5 : return voiture.getLpg();
                case 6 : return voiture.getSociete();
                default : return null;
            }
        }
     
        @Override
        public Class getColumnClass(int col)
        {
            Class c;
            switch(col)
            {
                case 0 : c = String.class;
                    break;
                case 1 : c = Integer.class;
                    break;
                case 2 : c = String.class;
                    break;
                case 3 : c = String.class;
                    break;
                case 4 : c = Date.class;
                    break;
                case 5 : c = Boolean.class;
                    break;
                case 6 : c = String.class;
                    break;
                default : c = String.class;
            }
            return c;
        }
    }
    Quand je clique sur Listing, il charge, mais ne m'affiche plus les noms de colonnes, ni le contenu.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Je suis désolé d'être si peu précis, nous devons normalement faire ce travail par deux (ce qui m'aiderait, je l'imagine) mais mon "équipier" ne vient plus au cours, donc impossible pour lui de programmer ou de comprendre ce que je fais.. Je vous remercie en tout cas déjà pour le temps que vous passez à m'aider.

  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
    Tu convertis le java.sql.Date en GregorianCalendar. Pourquoi faire ça ? Stocke la propriété "date de réparation" dans le type Date. Tu peux directement utiliser la valeur de type java.sql.Date.
    Tu peux également récupérer la date dans le type java.util.Date par la méthode getTime() de Calendar.

    On ne peut formater en tout cas des instances de Calendar par un DateFormat.
    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.

  9. #9
    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
    Citation Envoyé par ZerQ17 Voir le message
    Je suis désolé d'être si peu précis, nous devons normalement faire ce travail par deux (ce qui m'aiderait, je l'imagine) mais mon "équipier" ne vient plus au cours, donc impossible pour lui de programmer ou de comprendre ce que je fais.. Je vous remercie en tout cas déjà pour le temps que vous passez à m'aider.
    L'ordre des colonnes est différent dans la requête que dans la table, mais ce n'est pas ça qui importe : c'est ce que fait le modèle qui importe. Et la colonne numéro 6 (donc la septième) qui est de type Date est bien celle qui correspond au gette de "date de réparation" de la classe Voiture.
    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.

  10. #10
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Car dans mon constructeur Véhicule, la date est de type GregorianCalendar(). En ayant changé l'ordre de la classe AllVehicule, l'onglet listing ne plante plus, mais n'affiche plus rien.

  11. #11
    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
    Citation Envoyé par ZerQ17 Voir le message
    Car dans mon constructeur Véhicule, la date est de type GregorianCalendar()..
    Il faut changer ça. Cela ne sert à rien. Si on a besoin de faire des manipulations avec un Calendar (vaut mieux référence l'interface que la classe), on le fait au moment opportun. Cette classe sert uniquement à faire des manipulations de date (affectation, différences entre dates, des trucs comme ça). Et encore, depuis Java 8, il vaut mieux utiliser des LocalDate au lieu de java.util.Date et Calendar. C'est bien plus simple à manipuler.
    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.

  12. #12
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    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
    public class Vehicule {
     
        private final int NBPLAQUE = 7;
        private final int NBSOCIETE = 20;
        private final int NBCHASSIS = 17;
     
        private String nChassis, plaque, carburant, societe;
        private Integer cylindree;
        private Boolean lpg;
        private GregorianCalendar dateDebRepa;
     
        public Vehicule(String nC, String pL, String cA, String sO
        , int cY, Boolean l, GregorianCalendar date) throws AjoutException
        {
            this.nChassis = nC;
            this.plaque = pL;
            this.carburant = cA;
            this.societe = sO;
            this.cylindree = cY;
            this.lpg = l;
            this.dateDebRepa = date;
        }
     
        public String getNChassis()
        {
            return nChassis;
        }
     
        public String getPlaque()
        {
            return plaque;
        }
     
        public String getCarburant()
        {
            return carburant;
        }
     
        public String getSociete()
        {
            return societe;
        }
     
        public Boolean getLpg()
        {
            return lpg;
        }
     
        public Integer getCylindree()
        {
            return cylindree;
        }
     
        public GregorianCalendar getDateDebRepa()
        {
           return dateDebRepa;
        }
    Alors je veux bien faire comme vous le proposez, mais nos professeurs ne nous ont enseigné que le GregorianCalendar pour gérer les dates.

  13. #13
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Soit tu stocke dans ton véhicule un date plutôt qu'un gregoriancalendar et ton problème est réglé. Soit tu t'obstine mais dans ce cas ne ment pas au jtable en lui prétendant que c'est une date.

  14. #14
    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
    Citation Envoyé par ZerQ17 Voir le message
    mais nos professeurs ne nous ont enseigné que le GregorianCalendar pour gérer les dates.
    N'importe quoi.
    Mais ne vas pas te braquer ton prof...

    dans getValueAt, le cas 4, tu fais : (enfin le cas 4 : ça tu l'as changé depuis tout à l'heure, avant c'était le cas 6)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       case 4 : return voiture.getDateDebRepa().getTime();
    Attention, toutefois, si la date peut être null, ça fera une NPE tel quel. Gère ce cas au besoin.
    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.

  15. #15
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Voila j'ai changé et mis la variable en type Date. Je n'ai plus qu'à trouver pourquoi ma table ne s'affiche plus et ca devrait être réglé. Un énorme merci, un avis extérieur fait toujours beaucoup de bien.

  16. #16
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     this.add(tableListing);
    this.add(barreDefilante, BorderLayout.CENTER);
    Il y a 2 problèmes.

    Commençons par le secondaire, mais important :

    Par défaut, la contrainte est CENTER pour un BorderLayout. Donc ici tu ajoutes 2 composants au panel, au même endroit dans le layout. Le BorderLayout ne sait pas gérer plusieurs composants au même endroit. Du coup, tu as 2 composants plus ou moins au même endroit (l'un cache l'autre), dont un seul est correctement géré par le layout. Cela ne peut donner que du n'importe quoi.

    Le problème principal maintenant :

    Un composant Swing ne peut se trouver que dans un seul conteneur à la fois. Donc tu mets ta JTable dans un JScrollPane, puis tu la mets dans un conteneur (le this dans le code). Donc il sort automatiquement du JScrollPane. Donc le JScrollPane est vide. Puis tu mets le JScrollPane par dessus la JTable, et donc tu ne vois plus rien.

    La seconde ligne de code dans le code ci-dessus est suffisante. Il faut toutefois ajouter : barreDefilante.setColumnHeaderView(tableListing.getTableHeader())
    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.

  17. #17
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Vous n'imaginez pas à quel point je vous suis redevable... J'ai encore énormément à apprendre ^^ Vous venez de me sauver ! Un énorme merci !!

    Nom : YES.png
Affichages : 1455
Taille : 68,2 Ko

  18. #18
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    je vais en profiter pour quelques petites remarques cosmétiques:

    AjoutException / ExceptionBaseDeDonnee: essaie de te tenir à une convention: typiquement ce sera xxxxException pas Exceptionxxxx
    Aussi:
    on ne met pas de majuscules dans un nom de package
    on ne met pas de pluriel: par définitionn, un package contient plusieurs classes, donc inutile de l'appeler "interfaces" , "exceptions"
    tu mélanges de l'anglais (connection, listing) et du français (Modele, Vehicule) dans les noms de classe, ça rend difficile à lire
    Les noms de classe commencent toujours par une majuscule (cd accesBD)

  19. #19
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 14
    Points : 4
    Points
    4
    Par défaut
    Merci pour tes remarques ! Je vais appliquer les changements adéquats !

    Cordialement, Florian.

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

Discussions similaires

  1. Cannot format given Object as a Date
    Par SAKDOSS dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 20/02/2011, 16h38
  2. Formater avec String.Format un nombre ou une date
    Par bubulemaster dans le forum Débuter
    Réponses: 2
    Dernier message: 29/06/2008, 19h00
  3. format saisie de champs type DATE
    Par dohamsg dans le forum Firebird
    Réponses: 1
    Dernier message: 31/08/2007, 09h59
  4. [MySQL] le format idéal pour stocker des dates avec l'heure
    Par Philoulheinz dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/02/2007, 21h53
  5. [MySQL] Faire un INSERT d'une date format Francais dans un champ date '0000-00-00' ?
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 20/11/2006, 13h49

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