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 :

Raffraichir un JLabel sur une somme de colonnes


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut Raffraichir un JLabel sur une somme de colonnes
    Bonjour à tous,

    J'ai une table avec une colonne Montant(Montant de chaque lignes).
    J'aimerai obtenir la somme de la colonne Montant dans un Jlabel à l'exterieur de la Jtable.
    Est ce possible?
    Faut il utiliser un renderer?

    Qu'en pensez vous?

  2. #2
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    il n'y a pas de problème particulier à le faire. Quel est le problème ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut
    D'accord, il faut donc utiliser un renderer?
    Comment faire?
    Merci

  4. #4
    Membre très actif
    Avatar de william44290
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Juin 2009
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 400
    Par défaut
    a) ta table doit probablement se trouver dans un panel
    b) tu ajoute un label dans ce panel
    c) tu ajoute une méthode à ton model qui te renvoi la somme que tu passe à ton label
    d) le panel est surement dans une fenetre qui te sert de controleur. à lui de déclencher les méthodes de mise à jour.

    Montre ton code, car au vu de ton énoncé : ce que tu dis ne doit peut-être pas correspondre à ce que tu code.

  5. #5
    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
    Si ton JLabel est en dehors de la JTable, un Renderer ne servira strictement à rien.

    Dans ce cas la façon de faire est de mettre dans le JLabel la somme des valeurs obtenues par une boucle sur le modèle de la JTable.

    Il faut également prendre en compte les changements qui pourraient survenir. Donc dans ce cas il faut utiliser un TableModelListener pour maintenir le Jlabel à jour.

    Par exemple

    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
    package lists;
     
    import javax.swing.JLabel;
    import javax.swing.JTable;
    import javax.swing.event.TableModelEvent;
    import javax.swing.event.TableModelListener;
    import javax.swing.table.TableModel;
     
    public class Fragment {
        private JTable myTable;
        private JLabel label;
        private static final int MY_COLUMN = 2;
     
        public Fragment() {
     
            myTable = new JTable();
            label = new JLabel();
            initializeLabel();
        }
     
        private void initializeLabel() {
            if (myTable != null) {
                myTable.getModel().addTableModelListener(new TableModelListener() {
     
                    @Override
                    public void tableChanged(TableModelEvent e) {
                        if (e.getColumn() == MY_COLUMN) {
                            label.setText(String.valueOf(calculateMyColumnTotal()));
                        }
     
                    }
                });
                label.setText(String.valueOf(calculateMyColumnTotal()));
            }
        }
     
        private double calculateMyColumnTotal() {
            TableModel model = myTable.getModel();
            double total = 0;
            for (int i = 0; i < model.getRowCount(); i++) {
                total += (Double) model.getValueAt(i, MY_COLUMN);
            }
            return total;
        }
     
    }

  6. #6
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut
    Merci Sinok

    Je me doutais qu'il fallait mettre un tableChanged, mais je ne savais pas comment l'intégrer.

    Je ne savais pas qu'il existait un écouteur sur le Jtable: .addTableModelListener
    J'essaierais dès que j'ai un peu de temps libre.
    Encore Merci

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

Discussions similaires

  1. Requete pour trier un état sur une somme partielle ?
    Par thierry.drouet dans le forum Access
    Réponses: 5
    Dernier message: 26/10/2006, 16h45
  2. faire une somme de colonnes ?
    Par viny dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 08/09/2006, 15h49
  3. [syntaxe]critère sur une somme
    Par banzzai dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/07/2006, 17h23
  4. [Etat] appliquer une condition sur une somme
    Par Oluha dans le forum IHM
    Réponses: 5
    Dernier message: 13/02/2006, 13h34
  5. [Débutant] DISTINCT sur une seule des colonnes ?
    Par Neilos dans le forum Langage SQL
    Réponses: 9
    Dernier message: 23/06/2004, 23h04

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