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 :

Mise à jour automatique JTable


Sujet :

Composants Java

  1. #1
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 175
    Par défaut Mise à jour automatique JTable
    bonjour

    j'utilise un JTable qui contient trois colonne :

    |libele_artilce|quantite|prix_unitaire|montant|
    -----------------------------------------------
    | | | | |
    | | | | |
    -----------------------------------------------

    j'utilise un model personnalise ou j'ai fait que la methode isCellEditable() retourne true pour les colonnes quantite et prix_unitaire :
    alors je veux que lorsque l'utilisateur modifie la quantite(int) ou le prix(double) => le montant se calcule au fur et au mesure que l'utilisateur saisi
    j'ai essayé avec defaultCellEditor mais j'ai trouvé beaucoup de probleme
    un morceau de code sera tres apprecié

    merci pour votre aide

  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,

    normalement cela se passe dans la méthode surchargée public void setValueAt( Object aValue, int rowIndex, int columnIndex )
    Elle devrait se trouver dans la classe héritant de AbstractTableModel gérant les données de votre table.
    Plus d'infos ici: http://download.oracle.com/javase/6/...ect, int, int)

    Donc dans cette méthode, 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
    @Override
    public void setValueAt( Object oValeur, int enregistrement, int champ )
    {
      CLigneOperation COperation; // Ma classe qui gère une ligne de données de JTable
     
      if( oValeur == null )
        return;
     
      /.../
     
    Gestion de la ligne et la colonne modifiée... puis entrée de la valeur oValeur dans la base de données liée à la JTable
    En ce qui me concerne, il s agit de COperation
     
      /.../
     
      // Avertissement à la JTable, que des données ont été modifiées:
      fireTableRowsUpdated( enregistrement, enregistrement );
     
      // Logiquement cela déclenche un raffraichissement graphique de la JTable
    }
    En espérant que cela vous aide...

  3. #3
    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
    Pour moi ce serait plutôt dans le getValueAt que ça se calculerait.
    En effet la colonne montant n'étant probablement pas modifiable, il suffit de retourner le prix unitaires * quantité pour la colonne montant dans le getValueAt. Et bien sûr de rendre la colonne montant non éditable.

    Pas besoin de toucher au setValueAt dans ce cas.

  4. #4
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 175
    Par défaut encore mieux
    bonjour merci pour votre aide
    j'ai testé les deux => ca marche avec
    mais j'ai remarqué que le set est plus rapide car c'est elle qu'elle modifie la valeur puis le get l'affiche alors c'est mieu

    reste une chose qui n'est pas realisé : je veux que l'utilisateur en saisissant la nouvele valeur le montant se calcule (pas jusqu a la fin de la saisie quand on clique sur entree ou on clique sur autre chose )

    je m'explique par exemple si il veut saisir 345 : je veux que lorsque il saisi 3 on affiche le resultat pour 3
    quand il saisi 4 on affiche le resultat pour 34 ......

    merci d'avance

  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
    Dans ce cas le travail va se trouver dans l'Editor. Il va falloir qu'il commit sa valeur à chaque action de l'utilisateur.
    Une piste serait de placer un DocumentListener sur le composant texte retourné par la méthode getComponent (dont le retour doit être casté en JTextComponent) DefaultCellEditor et à chaque appel aux méthodes du listener faire un appel à la méthode fireEditingStopped du listener. (et encore je ne suis pas sûr que cela marche complètement, je n'ai pas eu le temps de tester).

  6. #6
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 175
    Par défaut encore mieux
    malgré la complexité de ton explication (en tout cas merci )
    je vais essayer de tester et poster si il ya de nouveau

  7. #7
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 175
    Par défaut
    et toi aussi si tu as le temps de m'ecrire un code : nhesite pas
    ca sera tres gentil de ta part
    cela m appris des heures et pas encore

  8. #8
    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,

    je suis confronté à ce cas dans le petit programme de compta que je me suis fait.
    Ce programme affiche sur chaque ligne:
    - Un montant au débit
    - Un montant au crédit
    - Le solde prévu du compte
    - Le solde réel du compte, lorsque l'opération est pointée

    Le pointage se fait lorsque l'utilisateur clique sur la colonne contenant des cases à cocher (checkbox)

    Lorsque cet évènement se passe, le programme passe par la méthode surchargée setValueAt comme indiqué dans le post précédent.
    Mais avant de faire une alerte de modification de données grâce à fireTableRowsUpdated:
    - je fais d'abord une boucle qui recalcule tous les soldes réels des lignes cochées.
    - Puis je fais un fireTableRowsUpdated( ligne_debut, ligne_fin )

    Ainsi, en plus de la modification de cochage de la ligne cliquée, apparait tout les nouveaux soldes compris en tre la ligne_debut de la JTable, et la ligne du clic.
    En espérant que cela vous aide aussi...

  9. #9
    Membre très actif
    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 175
    Par défaut encore mieux
    merci pour ton intervention mais j'ai fait ces boucles et ... ca marché
    ce que je veux c'est juste queleque chose de plus pour rendre l'application plus efficasse

    il s'agit de
    je veux que l'utilisateur en saisissant la nouvele valeur le montant se calcule (pas jusqu a la fin de la saisie quand on clique sur entree ou on clique sur autre chose )

    je m'explique par exemple si il veut saisir 345 : je veux que lorsque il saisi 3 on affiche le resultat pour 3
    quand il saisi 4 on affiche le resultat pour 34 ......

    merci d'avance
    => le montant se calcule au fur at au mesure que l'utilisateur frappe

Discussions similaires

  1. mise à jour automatique de jtable à partir de BD
    Par javaphile dans le forum Composants
    Réponses: 9
    Dernier message: 25/09/2008, 15h48
  2. [VB6] Code pour Mise à jour automatique
    Par marsup54 dans le forum VB 6 et antérieur
    Réponses: 45
    Dernier message: 10/02/2006, 18h05
  3. mise à jour automatique de champs entre 2 tables
    Par romdyane dans le forum Access
    Réponses: 5
    Dernier message: 11/10/2005, 18h51
  4. système de mise à jour automatique
    Par eponette dans le forum Web & réseau
    Réponses: 2
    Dernier message: 24/08/2005, 20h17
  5. Mise à jour automatique d'un JTextAera
    Par Vlakyron dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 25/09/2004, 20h11

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