Bonjour

ca fait 2 jours que je galere avec Jtable pour le rafraichir , j'ai trouver enormement de poste sur la question j'ai presque tout essayer mais il semblerai que ca ne soit pas adequat a ce que je veux faire.

Je vous explique :

1 - Je recupere mesData d'une classe Catalogue qui me retourne Object[][] ( Contient tout les donnees des produits ) Jusqu'a maintenant tout vas bien

Liste de mes produits
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
      //1 : recuperer les donnees de la table produit
	private List<Object> requestProduit(String marque){
		String query = null;
		
		if( marque != null) { query = "WHERE id_mrk="+marque+"";}else{ query ="";}
		Connection connect = maSession;
        ResultSet listing = null;
        
		try {
			String requete = "SELECT * FROM Produit "+query+" ORDER BY id_prod"; //LA REQUETE CHANGE EN FONCTION DES PARAMETRES PASSER ICI IL SAGIT D'UN PARAMETRE RECUPERER PAR Jcombobox

			//System.out.println(requete);
			Statement stmt = connect.createStatement();
			listing =stmt.executeQuery(requete);
			
			List<Object> arrayproduit = new ArrayList<Object>();
			arrayproduit.clear();
			
			while(listing.next())
			{
			  List<Object> produit = new ArrayList<Object>();
			  produit.add(listing.getString(1)); 
			  produit.add(listing.getString(2));
			  produit.add(listing.getString(3)); 
			  produit.add(listing.getString(5));
			  arrayproduit.add(produit);
			  	
			}
			//log.info("Recuperation des produits catalogues");
			return arrayproduit;
		} catch (SQLException e) {
			log.error("Erreur de requete SQL !");

		}
		
		return null;
		
	}
Construire mon data object a partir de la liste
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
 
//2 : Construire mon data object
 
	public Object[][] Catalogue(String mark){
 
		     List<Object> listingProd = null; 
			 listingProd = requestProduit(mark);
 
			 int nbrligne = listingProd.size();
 
			 Object[][] data = new Object[nbrligne][4];
 
			  for(int j =0; j< nbrligne; j++) {
 
				List<Object> produit = (List<Object>) listingProd.get(j);
 
				for(int k = 0; k< 4; k++) {
 
					 data[j][k] = produit.get(k);
					//System.out.println("Ma Jtable DATA : ["+j+"]["+k+"] = "+produit.get(k)+"\n");
					 //log.debug("Ma Jtable DATA : ["+j+"]["+k+"] = "+produit.get(k)+"\n");
			      }
 
			  } 
 
			  return data;
	}

2 -par la suite dans une autre classe je cree ma Jtable pour l'afficher

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
private void maJtableCatalogue(){
	  
		matable = new JTable(){
			private static final long serialVersionUID = 1L;
            public boolean isCellEditable(int rowIndex, int colIndex) {return false;}
		};
		matable.getModel().addTableModelListener(matable);
		matable.setRowHeight(25);
		matable.addMouseListener(new java.awt.event.MouseAdapter(){
				public void mouseClicked(java.awt.event.MouseEvent e){
					            DetailProduit fichetech = null;
				  				int row= matable.rowAtPoint(e.getPoint());
				  				int produit = Integer.parseInt(matable.getValueAt(row,0).toString());
				  				fichetech = new DetailProduit(produit);
				  				fichetech.setLocationRelativeTo(null);
				}
		});
	
		 String[] entetes = {"N", "Ref","Produit", "Prix"};
		 Catalogue call = new Catalogue();
		 Object[][] mesData = call.Catalogue(value);
		 //System.out.println(mesData[0][1]+" "+mesData[0][2]+" "+mesData[0][3]);
		 matable.setBounds(12, 12, 935, 355);
		 matable.setCellEditor(null);
        
	     modele = new DefaultTableModel(mesData, entetes); 	 
	     modele.fireTableDataChanged();
		 matable.setModel(modele); 

		 //Pour Option trier ma table
		 trier = new TableRowSorter<TableModel>(matable.getModel());
		 matable.setRowSorter(trier);
		 
		  DefaultTableColumnModel colModel = (DefaultTableColumnModel) matable.getColumnModel();
 	      TableColumn nomprod = colModel.getColumn(2);
 	      TableColumn indexprod = colModel.getColumn(1);
 	      int width1=500;
 	      int width2=50;
 	      nomprod.setPreferredWidth(width1);
 	      indexprod.setPreferredWidth(width2);

 	     System.out.println("Nombre de ligne recuperer = "+modele.getRowCount());
	}
sur le dernier Code

J'ai verifier et Object mesData change a chaque fois que je choisi un element de Jcombobox en derniere ligne il me donne le bon nombre de ligne recuperer depuis ma BDD

En rouge : la construction de ma Jtable ( marche tres bien )

le Probleme est que ma Jtable ne se rafraichie par apres rechargement des data , j'ai pas su reconstruire mon MODEL modele.fireTableDataChanged(); ne marche pas

C'est vraiment Urgent je dois deposer ce projet demain matin