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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
| public class CalculTotalSwing extends JFrame {
private JPanel contentPane;
private JTable table;
private JTextField textField;
private JDateChooser dateDebut;
private JDateChooser dateFin;
private DefaultTableModel model;
private TableModelListener tableModelListener;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
CalculTotalSwing frame = new CalculTotalSwing();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public CalculTotalSwing() {
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(100, 100, 769, 577);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(107, 109, 636, 419);
contentPane.add(scrollPane);
table = new JTable();
scrollPane.setViewportView(table);
table.getModel().addTableModelListener(tableModelListener);
JButton btnRecherche = new JButton("Recherche");
btnRecherche.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
resultat();
setTableModelListener();
}
});
btnRecherche.setBounds(10, 21, 89, 23);
contentPane.add(btnRecherche);
textField = new JTextField();
textField.setBounds(122, 22, 86, 20);
contentPane.add(textField);
textField.setColumns(10);
JLabel lblPriode = new JLabel("P\u00E9riode");
lblPriode.setBounds(291, 25, 54, 14);
contentPane.add(lblPriode);
dateDebut = new JDateChooser();
dateDebut.setBounds(370, 21, 102, 20);
contentPane.add(dateDebut);
dateFin = new JDateChooser();
dateFin.setBounds(516, 21, 102, 20);
contentPane.add(dateFin);
}
public void resultat(){
MetierImpl metier=new MetierImpl();
Date date=dateDebut.getDate();
Date date1=dateFin.getDate();
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
java.sql.Date sqlDate1 = new java.sql.Date(date1.getTime());
model = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
return row!= getRowCount()-1;
}
@Override
public Class<?> getColumnClass(int columnIndex) {
return Integer.class;
}
};
model.setColumnIdentifiers(new Object[]{"Date","Entré","Sortie"});
Object[] rows=new Object[3];
Vector v=new Vector<>();// Vecteur qui permettra d'ajouter une dernière ligne dans la table.
v.add("Total");
List<Operations> operation=metier.consulterOperations(sqlDate, sqlDate1);//Création de la liste d'operation à partir de la base de donné
//Chargement de données dans le tableau
for(Operations op:operation){
rows[0]=op.getDATE_OP();
rows[1]=op.getENTRE();
rows[2]=op.getSORTIE();
model.addRow(rows);
}
model.addRow(v);// ajout de la dernière ligne au model
table.setModel(model);
}
private void setTableModelListener() {
tableModelListener = new TableModelListener() {
public void tableChanged(TableModelEvent e) {
int lastRow = model.getRowCount() - 1; // dernière ligne
if (e.getType() == TableModelEvent.UPDATE && e.getFirstRow() < lastRow && e.getLastRow() < lastRow && e.getColumn()==1) {
int row = lastRow;
int totalEntre = 0;
int totalSortie = 0; // on initialise le résultat
for (int i = 0; i < row; i++) {
if ( e.getFirstRow()>=i && i<=e.getLastRow() ) {
totalEntre += (int) model.getValueAt(i, 1); // calcul total de la colonne
totalSortie += (int) model.getValueAt(i, 2); // calcul total de la colonne
}
}
model.setValueAt(totalEntre, lastRow, 1); // après la boucle on modifie la cellule censé contenir le total
model.setValueAt(totalSortie, lastRow, 2); // après la boucle on modifie la cellule censé contenir le total
}
}
};
}
} |
Partager