Bonjour
Je dois faire un logiciel dans lequel on peut créer des devis, factures etc..
La saisie des produits se trouve dans une JTable, l'utilisateur ne veut pas appuyer sur un bouton pour insérer une nouvelle ligne,
il veut pouvoir cliquer n'importe où et saisir ce qu'il veut, un produit, un commentaire..., en sautant des lignes ou non.
Tous ça fonctionne, mais j'ai un souci au niveau des calculs.
Pour répondre aux attentes de l'utilisateur j'ai créé un objet LigneProduit et dans mon TableAbstractModel je crée une List de
500 LigneProduit, de sorte à ce que chaque ligne de ma JTable est un prix, une tva etc ... pour pouvoir effectuer des calculs
ce qui me donne (Voir Pièce jointe)
Je dois calculer le montant de la ligne, le totalBrutTTc,le total HT etc... à chaque insertion ou modification de ligne.
Ces variables sont une somme.
Le totalBrutTTC est la somme de la colonne MontantTTC.
Je ne sais pas où effectuer le calculs.
Si je l'effectue dans TableChanged (a chaque modification d'une ligne je re-calcule tout)
TotalBruttTTC+=colonneMontantTTC;
si je saisis un produit de 20 €
le totalBrutTTC=20, mais si je change la désignation sans changer le prix je vais appeller de nouveau TableChanged
et donc totalBrutTTC=40 ce qui est faux.
Si je l'effectue dans setValueAt les calculs ne sont pas effectués si on saisit rien dans la JTable c'est à dire si on choisis un article
avec le bouton vert les calculs ne sont pas effectués, de plus la question reste la même
pour l'instant je parcours toute ma JTable et je fais la somme à chaque changement bien sur ça fonctionne mais c'est peu lourd
car à chaque changement je parcours 500 lignes
J'ai pensé à faire un tableaux où je supprime à chaque fois l'ancienne valeur de totalTTc, ça fonctionne aussi, mais il me
faudrais faire un tableau pour les montantsHT, le totalTTC, le HT à 19.6, le HT à 7,
toutes les variables qui sont des sommes, ce qui est un peu lourd .
Bref je suis un peu perdu cela doit être tout bête mais ça m'echappe
Je précise que je débute et que JTable n'est pas évident au début
Merci pour l'attention.
Partager