Bonjour,
j'ai développé une sous-classe de AbstractTableModel qui permet de récupérer les données depuis une base de données:
Pour info la variable columNames sera un paramètre de la classe constructeur. Mais là n'est pas l'important.
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 import javax.swing.table.AbstractTableModel; import java.sql.SQLException; public class TableModelBDD extends AbstractTableModel{ private ConnectionJDBC conn; private String[] columnNames={"Id","Date","Ordre","Type","Operation","Montant","Categorie"}; Object [][] dataTable; /** Creates a new instance of TableModelBDD */ public TableModelBDD(ConnectionJDBC connection,String query) { //public TableModelBDD() { conn=connection; try { dataTable=connection.executeQuery(query); } catch (SQLException errSQL){ System.out.println("Erreur de l'execution de la requete"+errSQL); } } public Object getValueAt(int row,int col){ return dataTable[row][col]; } public int getRowCount(){ return dataTable[0].length; } public int getColumnCount(){ return columnNames.length; } public boolean isCellEditable(int row,int col){ return false; } public Class getColumnClass(int col){ return getValueAt(0,col).getClass(); } public String getColumnName(int col) { return columnNames[col]; } }
Dans une autre classe, j'instancie ma sous-classe plusieurs fois:
J'aimerais savoir pourquoi chaque nouvel instance table[i] doivent comporter le même nombre de ligne sous peine de me renvoyer une erreur.
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 String query; JTable[] table=new JTable[listOfCategorie.length]; TableModelBDD[] modelBDD=new TableModelBDD[listOfCategorie.length]; JScrollPane[] scrollPane=new JScrollPane[listOfCategorie.length]; int j; for (int i=0;i<listOfCategorie.length;i++) { j=i+1; //query="select * from transac where categoId="+j; query="select * from transac where categoId="+j; modelBDD[i]=new TableModelBDD(connectToCompteDB,query); table[i]=new JTable(modelBDD[i]); scrollPane[i]=new JScrollPane(table[i]); //System.out.println(listOfCategorie[i][0].toString()); navigation.addTab(listOfCategorie[i][0].toString(),scrollPane[i]); }
Je suppose que c'est certainement puisque la méthode getRowCount retourne le nombre de lignes et que cette valeur est fixé par la première instance mais moi je crée plusieurs instances donc les valeurs devraient être propre à chaque instance, non ?
Merci.
++
Partager