Bonjour,
j'espère que cette fois vous pourrez me donner des pistes de travail au lieu de m'envoyer regarder la doc...
J'ai une JTable qui devrait afficher quattre colonnes avec "Prénom", "Nom", "Age" et "Clé Primaire", et des données récupérées d'une base de données. Au lieu de ça j'obtiens une fenêtre avec 4 colonnes (A,B,C,D) et des cellules vides. Je poste le code des classes concernées.
Modèle de JTable:
et voici pour la classe qui doit afficher la fenêtre:
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 package TableModel; import java.util.ArrayList; import javax.swing.table.*; /** * * @author mve */ public class MyTableModel extends AbstractTableModel{ protected String [] nomColonnes; protected ArrayList tableau; //constructeur public MyTableModel(String [] nomColonnes, ArrayList tableau) { this.nomColonnes=nomColonnes; majDonnees(tableau); } public void majDonnees(ArrayList nouvellesDonnees) { this.tableau=nouvellesDonnees; fireTableDataChanged(); } public int getRowCount() { return tableau.size(); } public int getColumnCount() { return nomColonnes.length; } public Object getValueAt(int row, int column) { return ((ArrayList)tableau.get(row)).get(column); } @Override public Class getColumnClass(int c) { return getValueAt(0,c).getClass(); } @Override public boolean isCellEditable(int rox, int col){ return false;//les données sont seulement consultables } }
Le message d'erreur affiché est le suivant:
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 package TableModel; import com.mysql.jdbc.ResultSetMetaData; import dataAccessLayer.PersonneFactory; import javax.swing.*; import java.awt.*; import java.util.ArrayList; import sql.ConnectionString; class FenetreAvecTable extends JFrame { protected Object pFactory; protected ResultSetMetaData resultatmd; public FenetreAvecTable() throws Exception{ setTitle("PERSONNES"); setSize(600, 500); setLocationRelativeTo(null); setResizable(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); PersonneFactory persFactory= new PersonneFactory(new ConnectionString("jdbc:mysql://localhost/personnes", "root", "movesu")); String [] titres = {"Prénom","Nom","Age","Clé Primaire"}; ArrayList tab = persFactory.List(); MyTableModel monmodele = new MyTableModel(titres,tab); JTable monTableau = new JTable(monmodele); JScrollPane scrollPane = new JScrollPane(monTableau); getContentPane().setLayout(new BorderLayout()); getContentPane().add(scrollPane); } public static void main (String [] args) throws Exception{ FenetreAvecTable fenetre = new FenetreAvecTable(); fenetre.setVisible(true); } }
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.util.ArrayList
Comment faire de mon ArrayList un String pour qu'il s'affiche. J'ai essayé la méthode goString() sans succès, mais je crois que je n'ai pas su m'en servir;
Merci d'avance
Partager