Bonjour
ca fait 2 jours que je galere avec Jtablepour 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
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
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; }
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
sur le dernier Code
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
44private 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()); }
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![]()







Répondre avec citation

Partager