Tri de la Jtable selon un argument donnée
Bonjour,
je souhaite faire le traitement de ma base de données dans un Jtable mais je rencontre quelques difficultés.
Ce traitement consiste à identifier certaines lignes dans mon Jtable selon un argument de 31 par rapport au cumul progressive des chiffres.
Pour y parvenir, j'ai chargé ma base de donnée par ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| public void chargementBase(){
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
MetierImplTontinier metier=new MetierImplTontinier();
Date dateDebut=dateD.getDate();
java.sql.Date SqldateD=new java.sql.Date(dateDebut.getTime());
Date dateFin=dateF.getDate();
java.sql.Date SqldateF=new java.sql.Date(dateFin.getTime());
String numAgent=txtnumAgent.getText();
String type=cmbType.getSelectedItem().toString();
// Chargement de la liste de données provenant de la table A
//List<PassageTontinierCaisse> mouvement1=metier.consulterRetraitEnregistreCaisse(SqldateD, SqldateF, numAgent,type);
// Chargement de la liste de données provenant de la Table B
List<Mouvement> mvt=metier.consulterRetrait(SqldateD, SqldateF, numAgent,type);
model=new DefaultTableModel();
model.setColumnIdentifiers(new Object[]{"N°","Date","Client","Agent","Compte", "Nbre","Mise","Type","Cumul","Cumul"});
Object[] rows=new Object[9];
int a=1;
//Ajout dans le Jtable des données de la table A
for (int i = 0; i < mvt.size(); i++) {
rows[0]=a++;
rows[1]=sdf.format(mvt.get(i).getDateMouvement());
rows[2]=mvt.get(i).getCompte().getNumClient();
rows[3]=mvt.get(i).getNumAgent();
rows[4]=mvt.get(i).getNumCompte();
//rows[5]=mvt.get(i).getCompte().getClient().getNom()+' '+mvt.get(i).getCompte().getClient().getPrenom() ;
rows[5]=mvt.get(i).getNombre();
rows[6]=mvt.get(i).getCompte().getMontantMise();
rows[7]=mvt.get(i).getTypeOp();
rows[8]=mvt.get(i).getNombre()*mvt.get(i).getCompte().getMontantMise();
//rows[6]=mvt.getNumero();
model.addRow(rows);
}/**/
table.setModel(model);
setTableModelListener();
calculCumul();
} |
Puis je modifier mon Jtable en calcul le cumul par ce code ci.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| private void calculCumul() {
String numCompte;
int lastRow = model.getRowCount() - 1; // dernière ligne
//int lastRowDernier = model.getRowCount() ;
int solde=0;
String compte;
// Collections.sort(List<model.getValueAt(i, 4).toString()>, Comparator<model.getValueAt(i, 4).toString()>);
for (int i = 0; i < lastRow; i++) {
solde+=(int) model.getValueAt(i, 5);
model.setValueAt(solde, i, 9);
}
} |
Pour permettre à Jtable d'être modifiable
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| private void setTableModelListener() {
// int lastRow = model.getRowCount() - 1;
tableModelListener = new TableModelListener() {
public void tableChanged(TableModelEvent e) {
int lastColoum = model.getColumnCount();
if (e.getType() == TableModelEvent.UPDATE && e.getFirstRow()
< lastColoum && e.getLastRow()
< lastColoum && e.getColumn()==1) {
//etatRemboursement();
calculCumul();
}
}
};
table.getModel().addTableModelListener(tableModelListener);
} |
Actuellement le résultat que j'obtient par rapport au cumul n'est pas celui que je veux. Car ce code me permet de faire le cumul pour tous les comptes, mais je souhaite faire le cumul pour chaque compte.
Mon problème se résume en deux étapes :
1- comment pouvoir faire le cumul progressive par compte;
2- comment pouvoir identifier les lignes qui permettent d'augmenter chaque 31ème unité dans le cumul par compte.
Merci