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 :

[JTable] Format monnétaire


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ixterm
    Inscrit en
    Mars 2005
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 283
    Par défaut [JTable] Format monnétaire
    bonjour

    J'aimerais pouvoir mettre le format monnétaire sur une colonne précise d'une JTable.

    Cette JTable provient d'un tableau sous Mysql (qu'on exploite avec ResultSet et ResultSetMetaData)

    Comment implementer la classe DefaultCellRenderer pour obtenir un format monnétaire? (ou au moins avoir la séparation des chiffres 3 par 3)

    (ex : au lieu d'avoir 1200000 , on aurait 1 200 000 ou 1,200,000)

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 179
    Par défaut
    Citation Envoyé par ixterm Voir le message
    Comment implementer la classe DefaultCellRenderer pour obtenir un format monnétaire? (ou au moins avoir la séparation des chiffres 3 par 3)
    Les classes NumberFormat et DecimalFormat sont tes amies

    Fred

  3. #3
    Membre éclairé Avatar de ixterm
    Inscrit en
    Mars 2005
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 283
    Par défaut
    Lorsque j'applique la methode NumberFormat.getInstance().format, j'obtiens l'effet souhaité.

    Mais je veux l'appliquer à une colonne d'une JTable, donc là est l'ennui.

    Il faudrait pouvoir l'appliquer à table.getTableColumnModel().getColumn(4)

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 179
    Par défaut
    Citation Envoyé par ixterm Voir le message
    Il faudrait pouvoir l'appliquer à table.getTableColumnModel().getColumn(4)
    Ben tu l'avais presque, il suffit d'assigner ton renderer à la colonne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    table.getTableColumnModel().getColumn(4).setCellRenderer(myRenderer);
    Fred

  5. #5
    Membre éclairé Avatar de ixterm
    Inscrit en
    Mars 2005
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 283
    Par défaut
    et donc le myRenderer serait contenu dans classe DefaultCellRenderer ?

    J'ai déjà implementé le DefaultCellRenderer pour pouvoir centrer l'alignement du contenu des cellules

    Une autre solution consiste à utiliser une boucle for et changer chaque cellule de la colonne que je veux éditer dans la jtable.

    Mais là, la méthode setValueat(Object, row, column) me pose problème

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 179
    Par défaut
    Citation Envoyé par ixterm Voir le message
    et donc le myRenderer serait contenu dans classe DefaultCellRenderer ?
    J'ai déjà implementé le DefaultCellRenderer pour pouvoir centrer l'alignement du contenu des cellules
    Donc tu as bien créé une classe héritant de DefaultCellRenderer et implémentant le formatage monétaire. C'est une instance de cette fameuse classe que j'ai appelé myRenderer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TonRendererMonetaire myRenderer = new TonRendererMonetaire();
    table.getTableColumnModel().getColumn(4).setCellRenderer(myRenderer);

    Une autre solution consiste à utiliser une boucle for et changer chaque cellule de la colonne que je veux éditer dans la jtable.
    Mais là, la méthode setValueat(Object, row, column) me pose problème
    C'est une solution a éviter si tu veux mon avis. Tes données sont numériques, elles doivent le rester. Si jamais tu dois manipuler tes données (récupérer une valeur sélectionnée, éditer une cellule, faire des totaux, etc...) que vas-tu faire avec des données textuelles ? De plus, le tri sur cette colonne ne sera plus correct, les plus petites valeurs seront celles qui auront le moins de caractères et donc par exemple "5" sera plus petit que "-5" ce qui est quand même dommage.

    Tu ne dois pas mélanger les données en elles-même de leur représentation à l'écran. Les deux doivent être séparés, c'est la base du modèle MVC, et c'est pour ça qu'existent les renderers.

    Fred.

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

Discussions similaires

  1. [JTable] Formater une date
    Par CaRadek dans le forum Composants
    Réponses: 1
    Dernier message: 11/12/2010, 13h55
  2. JTAble formater cellule
    Par jack3483 dans le forum Composants
    Réponses: 2
    Dernier message: 05/08/2010, 12h27
  3. [Java - JTABLE] Changer le format d'une colonne
    Par aurelius_pr dans le forum Composants
    Réponses: 2
    Dernier message: 21/06/2010, 10h09
  4. [SWING] Comment formater une cellule d' une JTable ?
    Par Hamdi Hedhili dans le forum Composants
    Réponses: 6
    Dernier message: 23/12/2008, 14h59
  5. JTable, créer un comparateur de Dates au format String
    Par Nyphel dans le forum Composants
    Réponses: 7
    Dernier message: 13/02/2007, 16h15

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