Calculs dans un JTable

Fermé
Coubi7 Messages postés 6 Date d'inscription mardi 11 août 2015 Statut Membre Dernière intervention 28 août 2015 - 22 août 2015 à 11:42
Coubi7 Messages postés 6 Date d'inscription mardi 11 août 2015 Statut Membre Dernière intervention 28 août 2015 - 24 août 2015 à 20:14
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 !!!

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
22 août 2015 à 21:05
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.
1
Coubi7 Messages postés 6 Date d'inscription mardi 11 août 2015 Statut Membre Dernière intervention 28 août 2015
23 août 2015 à 17:38
Exactement, le tableau excel illustre bien ce que je veux, vous avez compris mon problème. Je pense alors que ces liens là contiennent la solution. Je vous répond dans quelques temps !!!
Merci beaucoup !!!
0
Coubi7 Messages postés 6 Date d'inscription mardi 11 août 2015 Statut Membre Dernière intervention 28 août 2015
24 août 2015 à 19:04
J'ai lu le tutoriel Listening for Data Changes mais je ne sais pas ce qu'ils veulent dire par "Do something with the data" c'est-à-dire faites quelques choses avec les données.
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015 > Coubi7 Messages postés 6 Date d'inscription mardi 11 août 2015 Statut Membre Dernière intervention 28 août 2015
24 août 2015 à 19:30
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.
0
Coubi7 Messages postés 6 Date d'inscription mardi 11 août 2015 Statut Membre Dernière intervention 28 août 2015
24 août 2015 à 19:39
A quoi sert la méthode getFirstRow() ?
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015 > Coubi7 Messages postés 6 Date d'inscription mardi 11 août 2015 Statut Membre Dernière intervention 28 août 2015
24 août 2015 à 19:48
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.
0