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] ligne de total ?


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut [JTable] ligne de total ?
    Bonjour,

    Je voudrais créer une table avec une ligne de titre en haut et une ligne permettant de faire des totaux (si possible en bas et toujours visible). Avec JTable, je ne vois pas trop comment faire la ligne de total.

    Est-ce que vous connaissez un moyen de gérer cette ligne de total sans avoir à redévelopper pleins de trucs ?

    Merci
    Nico

  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
    Salut,

    J'ai déja fait quelque chose de ce style, donc oui, on peut très bien faire ça avec les JTable. En fait, ma contrainte était de gérer des ruptures et d'insérer à chaque rupture un entête et/ou une ligne de fin (avec de surcroit la possibilité d'avoir un bouton +/- pour masquer/afficher les lignes d'un groupe.

    Pour ça, il m'a fallu développer un certains nombre de chose, mais si tu te limites à une ligne de total (pas de gestion de rupture), ça devrait être jouable sans trop de code.

    Le principe, c'est que ta JTable affiche ce qu'il y a dans ton modèle, en itérant sur chaque cellule grâce à la méthode getValueAt(row,col).
    Tu peux donc créer ton propre modèle en héritant de AbstractTableModel et gérer ce modèle particulier pour que la/les premières ligne soient de lignes d'entêtes et la/les dernières ligne des lignes de total.

    Le défaut immédiat de la technique est que tu ne peux plus appliquer de tri sur les colonne sous peine de voir ta ligne de total se retrouver au milieu de tes données. Si tu dois aussi gérer les tris, alors tu devras certainement gérer dans ton modèle une séparation entre les données réelles et les données calculées. Tu devras ensuite créer ton propre RowSorter pour ne trier que les données réelles.

    Fred.

  3. #3
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut
    Merci pour la réponse, mais il me semble que çà ne gère que la partie données (faire des totaux), pas la partie visuelle (avoir la ligne visible comme une ligne de titre) et c'est surtout celle là qui me semble la plus costaud à développer si il faut tout refaire à la main.

  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 NicoV Voir le message
    mais il me semble que çà ne gère que la partie données (faire des totaux), pas la partie visuelle (avoir la ligne visible comme une ligne de titre)
    Je ne suis pas sur de comprendre, la table affiche les données de ton modèle, donc les entêtes et les totaux apparaissent bien dans la table. Si par là, tu entends avoir un rendu différent, oui, il faut faire des choses en plus.

    Ce que j'utilise c'est un renderer qui fait l'appel du renderer original de la cellule et change la police de caractère pour la mettre en gras. Ce qu'il te faut, c'est de différencier s'il s'agit d'une ligne de donnée ou de total (dans ton cas ça devrait pas être bien compliqué, tu testes si c'est la première ou la dernière).

    Fred.

  5. #5
    Membre confirmé
    Inscrit en
    Octobre 2006
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 108
    Par défaut
    Ce que je voudrais c'est que la ligne de totaux soit toujours visible, comme le titre du tableau. C'est à dire que la scrollbar ne déplace que les cellules de détail et pas la ligne de total.
    Faire les calculs ou changer le rendu d'une cellule, je vois bien, mais c'est le fait de sortir la ligne de totaux de la partie scrollable qui me laisse perplexe.

  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
    D'accord, je comprend mieux.

    Oublie tout ce que j'ai dit à propos du modèle. Dans ce cas, les données de totaux ne font pas partie du modèle. Elle ne font d'ailleurs pas partie de la table non plus, c'est un composant indépendant. Les titres de colonnes de la table sont implémentés ainsi, c'est un composant JTableHeader. Il y a tout un algo dans le scrollpane pour gérer ce cas particulier avec les tables.

    Ce que tu peux essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    - JScrollPane auquel tu as retiré la barre verticale
      - JPanel avec BorderLayout
        - JTableHeader en zone Top du panel
        - JScrollPane, auquel tu as retiré la barre horizontale, en zone Center
          - JPanel avec BorderLayout
            - JTable
        - Ton Composant de totaux en zone Bottom du panel
    J'ai essayé ce genre de truc pour associer plusieurs tables en donnant l'illusion d'une seule et ça fonctionnait bien. La hiérarchie parait un peu lourde, mais ça doit donner le résultat escompté.

    Fred.

Discussions similaires

  1. Somme de lignes et total de l'expression
    Par bogue dans le forum QlikView
    Réponses: 0
    Dernier message: 04/08/2009, 11h25
  2. Rajouter des lignes de total dans un stringgrid
    Par lila23 dans le forum Débuter
    Réponses: 4
    Dernier message: 06/04/2009, 12h25
  3. [SSRS 2005] Mettre en gras ligne sous total
    Par Sam3oul dans le forum SSRS
    Réponses: 4
    Dernier message: 24/11/2008, 17h57
  4. compteur de visteur en ligne et total de visiteur
    Par Fngonka dans le forum ASP.NET
    Réponses: 3
    Dernier message: 24/09/2007, 18h20
  5. [VBA-E] Colorer les lignes sous-total
    Par steps5ive dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/07/2006, 18h47

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