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

Composants Java Discussion :

Changer le format d'affichage date dans JTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Par défaut Changer le format d'affichage date dans JTable
    Bonsoir à tous,
    j'ai une Jtable reliée à une base de données qui comprend des champs en type DATE.
    Lorsque je saisie une date à partir d'un jTextfield sous format dd/mm/yy, ma jtable affiche la date sous format : "Thu Feb 02". Or j'aimerais un affichage court du style : 02/02/12.

    J'ai crée une classe de format de date lorsqu'il y a saisie dans la jTextfield :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     java.util.Date date = new java.util.Date();
            try{
                DateFormat formatter = new SimpleDateFormat("dd/MM/yy");
     
                date = formatter.parse((String)arg);
     
            }catch(Exception ex){
                System.out.println("dateConverter.convertReverse error"+ ex.getMessage());
     
            }
            return date;
    Dans la base de données c'est bien enregistré sous format "2012-02-03", mais j'aimerais que dans ma jTable il soit affiché le format de date court..
    Comment procéder ?
    Merci par avance.
    A+

  2. #2
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Bonjour,

    si je comprends bien, dans votre BdD, la date est inscrite sous la forme "2012-02-03"... c'est du texte non ?
    Pourquoi ne pas traiter la date sous forme d'un nombre de type long. Vous seriez quitte du casse-tête entre les différents formats de date.
    Ensuite je suppose que votre JTable est liée à une AbstractTableModel. Dans ce cas, vous avez la méthode surchargée public Object getValueAt() qui vous permettrait de renvoyer la date dans votre format voulu.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Par défaut
    Bonsoir,
    ok, merci pour le conseil.

    A+

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Très mauvais conseil.
    Le modèle ne doit en aucun cas se charger de la mise en forme.

    Il doit:

    1. Renvoyer Date.class pour la colonne contenant des dates dans la méthode getColumnClass
    2. Et renvoyer un objet de type Date pour cette colonne dans le getValueAt

    Puis il faut définir un Renderer pour les objets de type Date.
    Genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class MyDateRenderer extends DefaultTableCellRenderer {
        DateFormat formatter;
     
        public DateRenderer() {
            super();
        }      
     
        public void setValue(Object value) {
            if (formatter==null) {
                 formatter = new SimpleDateFormat("dd/MM/yyyy");
            }
            setText((value == null) ? "" : formatter.format(value));
        }
    }
    Puis l'affecter à la JTable de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myTable.setDefaltRenderer(Date.class, new MyDateRenderer ());

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    465
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 465
    Par défaut
    Après moult réflexion et recherches , j'avais finalement intégré le formatage de la date dans une de mes classes qui procède déjà au centrage des données dans la jTable.
    J'ai un petit peu fait différemment par rapport à ton code sinok, mais le principe et la logique reste la même..(m'enfin je suppose en tous les cas... ).
    Pour être honnête j'ai reprise du code que j'ai trouvé sur internet en ayant "fouillé " à droite et à gauche..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if ( value instanceof Date ){
    .
    String strDate = new SimpleDateFormat("dd/MM/yy").format((Date)value);
    this.setText( strDate );
    }
     
    return this;
    La seule chose que je trouve dommage c'est qu'il faille "refaire du code" juste pour une histoire de formatage de données en l'occurrence ici des dates. Il aurait été plus simple que la jTable reprenne automatiquement le format qu'on lui transmet étant donné qu'il y a un "binding" en place entre la source et la jTable.

    En tous les cas encore merci à vous tous pour votre aide....
    A+

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

Discussions similaires

  1. Changer le format de la date dans MVC
    Par persia dans le forum C#
    Réponses: 1
    Dernier message: 27/04/2011, 10h15
  2. Changer le format de la date dans un texte
    Par falcon dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 30/03/2009, 16h16
  3. Changer le format d'une date dans la commande
    Par leloup84 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 07/08/2007, 13h42
  4. formater un champ date dans un select
    Par sbeu dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 24/04/2006, 16h44
  5. [VBA-E]changer le format d'une cellule dans un spreadsheet
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 13/02/2006, 11h12

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