Bonjour,

je développe une petite application qui permet de compter le nombre de ventes que j'ai fait.

J'ai donc une JTable avec trois colonnes : la liste des offres et les objectifs de vente qui correspondent. La troisième colonne contient des zéros : elle me permet de compter le nombre de service vendu par offre.

J'ai en plus de ma JTable deux boutons un pour incrémenter mon compteur et l'autre pour décrémenter mon compteur en cas d'erreur.

C'est par ces compteurs que je souhaite modifier le contenu des cellules. Mais je ne veux pas que l'utilisateur puisse modifier directement à la mano.

Déjà est-ce possible???

Voici le code de mon modèle

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
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
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
 
 
import javax.swing.table.AbstractTableModel;
 
import com.mysql.jdbc.ResultSetMetaData;
 
 
public class ModeleDynamiqueObjet extends AbstractTableModel{
	private final ArrayList Loffres = new ArrayList();
 
	private final String[] entetes = {"Offres","Objectifs","Résultats"};
	public ModeleDynamiqueObjet()
	{
		super();
		Connection con = null;
	    ResultSet resultats = null;
 
 
        	 //placer les valeurs dans Vector ligne
        	try {
        		con = DriverManager.getConnection("jdbc:mysql://localhost/batonnage?zeroDateTimeBehavior=convertToNull","root","");
        		Statement st = con.createStatement();
        		resultats = st.executeQuery("SELECT libelle_offre,obj from offres LEFT OUTER JOIN obectifs ON offres.code_offre = obectifs.code_offre WHERE code_canal like '%"+ecran.uneActivite.getCode()+"%'");
       	     	ResultSetMetaData metadata = (ResultSetMetaData) resultats.getMetaData();
       	     	int nbColonnes = metadata.getColumnCount();
       	     	String[] rowTmp;
       	     	while(resultats.next()) {
       	     		rowTmp = new String[4];
       	     		rowTmp[0] = resultats.getString("libelle_offre");
       	     		rowTmp[1] = resultats.getString("obj");
       	     		rowTmp[2] = "0";
       	     		Loffres.add(rowTmp);
       	     	}
        	}
        	catch (SQLException e) 
        	{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
    }
 
 
	@Override
	public int getColumnCount() {
		// TODO Auto-generated method stub
		return entetes.length;
	}
 
	@Override
	public int getRowCount() {
		// TODO Auto-generated method stub
		return Loffres.size();
	}
	public String getColumnName(int columnIndex) {
		// TODO Auto-generated method stub
		switch(columnIndex){
		case 0 :
			return "Offres";
		case 1 :
			return "Objectifs";
		case 2 :
			return "Résultats";
		default :
		return null;
		}
	}
	@Override
	public String getValueAt(int rowIndex, int columnIndex) {
		// TODO Auto-generated method stub
		String[] rowTmp = (String[]) Loffres.get(rowIndex);
		return rowTmp[columnIndex];
 
 
	}
 
	public void setValueAt(int value, int row, int col) {
		int [] rowTmp = (int[]) Loffres.get(row);
		rowTmp[col] = Integer.parseInt((String) Loffres.set(row,value));
		fireTableCellUpdated(row,col);
 
	}
 
 
}
et voici le code de ma classe faisant appel à une JTable

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
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
 
public class ecr_batonnage extends JFrame implements ActionListener
{
	private ModeleDynamiqueObjet modele = new ModeleDynamiqueObjet();
	private JFrame fen = new JFrame();
	private JPanel panRes = new JPanel();
	ArrayList<JLabel> listLabel = new ArrayList<JLabel>();
	private JButton btnPlus = new JButton("+");
	private JButton btnMoins = new JButton("-");
	private JButton btnChAct = new JButton("Changer d'activité");
	private Container contenu = getContentPane();
	private String libelle_offre_selec;
	private JTable tableau =new JTable(modele);
 
 
	public ecr_batonnage() throws SQLException
	{
		//autoriser une seule sélection dans le tableau
	    tableau.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
 
	    //récupérer la valeur sélectionnée  
	    int num_col = tableau.getSelectedColumn();
	    System.out.println(num_col);
		int num_ligne = tableau.getSelectedRow();
		System.out.println(num_ligne);
		ecran.lib_of_selec = (String) tableau.getValueAt(num_ligne+1, num_col+1);
 
	     //mise en place ActionListener sur les trois boutons
	     btnPlus.addActionListener(this);
	     btnMoins.addActionListener(this);
	     btnChAct.addActionListener(this);
 
	    //gestion date pour récup numéro de semaine
		String format = "dd/MM/yyyy"; 
		java.text.SimpleDateFormat formater = new java.text.SimpleDateFormat( format ); 
		java.util.Date date = new java.util.Date(); 
		System.out.println( formater.format( date ) ); 
 
 
		//connexion et interrogation base MySQL
		Connection con = null;
	    ResultSet resultats = null;
 
	     con = DriverManager.getConnection("jdbc:mysql://localhost/batonnage?zeroDateTimeBehavior=convertToNull","root","");
	     Statement st = con.createStatement();
	     resultats = st.executeQuery("SELECT libelle_offre from offres where code_canal like '%"+ecran.uneActivite.getCode()+"%'");
	     ResultSetMetaData metadata = (ResultSetMetaData) resultats.getMetaData();
	     int nbColonnes = metadata.getColumnCount();
 
          //ajout des controles dans les différents container puis dans la JFrame        
         contenu.add(new JScrollPane(tableau), BorderLayout.CENTER);
 
         panRes.add(btnPlus);
         panRes.add(btnMoins);
         panRes.add(btnChAct);
         contenu.add(panRes,BorderLayout.AFTER_LAST_LINE);
         fen.add(contenu);
 
         fen.setSize(500,300);
         fen.setVisible(true);
		  	}
 
 
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
Object  source=e.getSource();
        String pdl = null;
        //si click sur le btnPlus
        if  (source==btnPlus)
        	{
        	//récup du PDL
        	pdl = JOptionPane.showInputDialog(fen, "Vous avez souscrit à l'offre "+ecran.lib_of_selec +", saisissez le PDL correspondant :","PDL",JOptionPane.QUESTION_MESSAGE);
        	//System.out.println(pdl);
 
        	//mise à jour du Résultat dans tableau
        	String nb_vente = (String) tableau.getValueAt(0,2);
        	System.out.println(nb_vente);
        	int new_nb = Integer.parseInt(nb_vente)+1;
        	System.out.println("erreur");
        	System.out.println(new_nb);
        	tableau.setValueAt(new_nb,0,2);
        	}
        //si click sur le btnMoins
        else if (source==btnMoins)
    	{
        	//récup du pdl
        	pdl = JOptionPane.showInputDialog(fen, "Vous avez sélectionné l'offre "+ecran.lib_of_selec +", supprimer le PDL correspondant :","PDL",JOptionPane.QUESTION_MESSAGE);
        	//System.out.println(pdl);
 
        	//mise à jour du Résultat dans tableau
        	String nb_vente = (String) tableau.getValueAt(tableau.getSelectedRow(),2);
        	int new_nb = Integer.parseInt(nb_vente)-1;
        	System.out.println("erreur");
        	System.out.println(new_nb);
        	tableau.setValueAt(new_nb,0, 2);
    	}
        //si click sur Changement d'activité
        else if (source==btnChAct)
        	{
        	//retour à l'ecran ecr_choix_act
        	fen.setVisible(false);
        try {
			ecr_choix_act ecr = new ecr_choix_act();
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
       }
 
	}
}
Merci de votre aide !