Bonsoir, je revient encore avec mes problèmes. Je ne suis qu'un débutant qui apprend le code java.
J'ai un Jtable me permettant d'affiché les données provenant de ma base de données. Je veut effectué des calculs sur plusieurs cellules (en sélectionnant la ligne) du Jtable.
Je souhaite pouvoir ajouter ou diminuer la valeur de cellule ciblé selon qu'une ligne est sélectionné ou désélectionné dans mon Jtable.
Pour y parvenu, j'ai crée une variable me permettant de stocker la somme des valeurs des cellules sélectionnéss. En suite, j'ai utilisé le MouseEvent pour écouter le clic sur une ligne. Enfin je récupère la valeur de la ligne sélectionné (cellule ciblé) par la méthode getValuesAt().
Actuellement, ce code me permet de faire la somme en cliquant sur une ligne. Mais il ne tiens compte que des lignes sélectionnés; il fait plutôt la somme de la valeur existant avec la nouvelle sélection. Je ne sais pas comment écrire le code me permettant des lignes sélectionnées uniquement.
Voici mon code :
- pour affiche les données
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
    public void remplirTableau(){
			MetierImpl metier=new MetierImpl();
			SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
			String codeCli=cmbCodeCli.getSelectedItem().toString();
			List<Echeancier> opss=metier.consulterEcheancierNonRembourser(codeCli);
			model = new DefaultTableModel(){
				 @Override
			    public boolean isCellEditable(int iRowIndex, int iColumnIndex)
			    {
			          return false;
			    }
			    @Override
				public Class<?> getColumnClass(int columnIndex) {
					if (columnIndex==1 || columnIndex==2 || columnIndex==3) {
                        return Object.class; // le type des données de la première colonne
                     }else{
                    	 return Double.class;
                     }
 
				}
			  };
			model.setColumnIdentifiers(new Object[]{"Ref","Date prévu","Date réalisé","Dégré","Capital","Amortis","Interet","Epargne","Echeance"});
			Object[] row = new Object[9];
 
				for(Echeancier cl:opss){
 
				row[0] = cl.getIdEch();
				row[1] = sdf.format(cl.getDateEch());
				if(cl.getDateR()!=null){
					row[2] = sdf.format(cl.getDateR());
				}else{
					row[2] = cl.getDateR();
				}
				row[3] = cl.getNumEch();
				row[4] = cl.getCapital();
				row[5] = cl.getAmorti();
				row[6] = cl.getInteret();
				row[7] = cl.getEpargne();
				row[8] = cl.getEcheance();
 
 
				model.addRow(row);
			}
 
 
			table.setModel(model);
 
		}
- Pour écouter les clics et faire le calcul :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 private double valeur=0;
		private void maybeShowPopup(MouseEvent e) {
			int row=table.getSelectedRow();
			MetierImpl metier=new MetierImpl();
			//double valeur=0;
			try {
				if (e.getClickCount()==1) {
				for (int i = 0; i < table.getRowCount(); i++) {
				valeur+=(double)(table.getModel().getValueAt(row, 5));
				}
			}
				System.out.println(valeur);
			} catch (Exception e2) {
				JOptionPane.showMessageDialog(null, "Veuillez selectionné la ligne concernée.");
			}
 
 
 
 
		}
- au niveau du Jtable j'ai faire ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
table = new JTable();
		/**
                 * Cette action permet de faire une action sur un Jtable
                 */
		table.addMouseListener(new MouseAdapter() {
			@Override
			public void mousePressed(MouseEvent e) {
				maybeShowPopup(e);
 
			}
			@Override
			public void mouseReleased(MouseEvent e) {
				maybeShowPopup(e);
 
			}
		});
 
 
		scrollPane.setViewportView(table);
Merci d'avance.