Calculs dans un JTable

Coubi7 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
Coubi7 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -
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 !!!
A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020 > Coubi7 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
A quoi sert la méthode getFirstRow() ?
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020 > Coubi7 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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