Calculs dans un JTable
Coubi7
Messages postés
7
Statut
Membre
-
Coubi7 Messages postés 7 Statut Membre -
Coubi7 Messages postés 7 Statut Membre -
Bonjour à tous !!!
Je voudrais effectuer des calculs dans un JTable mais je ne sais pas comment faire. En fait, j'ai 4 colonnes: Désignation, Quantité (Q), Prix unitaire (PU) et Prix Total (PT). Je voudrais effectuer, selon la désignation, le calcul PT=Q*PU dans chacune des lignes où l'utilisateur entrera une Q et un PU et que la cellule du PT contienne le résultat.
Je voudrais aussi que lorsque l'utilisateur entre le mot clé "total", la cellule correspondant au PT affiche la somme de tous les PT calculés auparavant.
Merci de m'aider à résoudre ce problème !!!
Je voudrais effectuer des calculs dans un JTable mais je ne sais pas comment faire. En fait, j'ai 4 colonnes: Désignation, Quantité (Q), Prix unitaire (PU) et Prix Total (PT). Je voudrais effectuer, selon la désignation, le calcul PT=Q*PU dans chacune des lignes où l'utilisateur entrera une Q et un PU et que la cellule du PT contienne le résultat.
Je voudrais aussi que lorsque l'utilisateur entre le mot clé "total", la cellule correspondant au PT affiche la somme de tous les PT calculés auparavant.
Merci de m'aider à résoudre ce problème !!!
1 réponse
-
Bonjour,
Si je comprends bien, tu veux te faire une mini feuille Excel comme ça :

Je ne pense pas que "l'utilisateur entre le mot clé "total"" soit une bonne idée, il vaudrait mieux avoir une dernière ligne TOTAL toujours affichée mais que l'on décale au fur et à mesure que les lignes du dessus se remplissent. Ou plus simple : on calcule le total en dehors de la JTable.
Dans le tutoriel officiel How to Use Tables, ce qui t'intéresse sera Listening for Data Changes et éventuellement Using an Editor to Validate User-Entered Text.-
-
-
Et bien dans ton cas, si tu changes une case quantité ou une case prix unitaire, ce que tu vas faire c'est recalculer la case prix total de la ligne correspondante.
Exemple :
int column = e.getColumn(); int row = e.getFirstRow(); if (column==1 || column==2) { TableModel model = (TableModel) e.getSource(); int qty = (Integer) model.getValueAt(row, 1); double price = (Double) model.getValueAt(row, 2); model.setValueAt(row, 3, qty * price); }
Evidemment je suppose ici que les valeurs dans chaque case sont correctes, mais il faut le vérifier, en particulier avec Using an Editor to Validate User-Entered Text. -
-
Avec un JTable il est possible de changer plusieurs lignes d'un coup, les indices des lignes qui ont changées sont donc référencées dans l'événement par les méthodes getFirstRow() et getLastRow(), mais dans ton cas vu que tu ne changes qu'une case à la fois, ces deux méthodes renverront le même résultat : le numéro de la ligne sélectionnée.
-