Bon maintenant j'ai une merde avec mon modèle.
Y'a t-il des limites à redéfinir les méthodes getRowCount(), getValueAt(), ... car en implèmentant un vector pour alimenter la JTable, celle-ci me renvoye un NullPointerException en tentant d'accéder à la méthode getRowCount() ?
N'y comprends + rien :
Je suis persuadé que l'erreur est vraiment conne mais ça fait un moment que je bataille.
Voici le code en question :
Classe définissant le modèle de la JTable :
package societe.traitement;
import javax.swing.table.AbstractTableModel;
import java.util.Enumeration;
import java.util.Vector;
import societe.stockage.ListeV;
import societe.stockage.ListeVStockable;
import societe.donnees.employe.*;
class EmpTableModel extends AbstractTableModel {
static final String[] COL_NAMES = {"Agence",
"Nom",
"Prénom",
"Adresse",
"Tél.",
"N° Sécu.",
"Date embauche",
"Matricule"};
private Vector rows = null;
public EmpTableModel(ListeVStockable empData) {
Vector rows = new Vector();
/*for(Enumeration e = empData.getEnum(); e.hasMoreElements(); ) {
this.rows.add(e.nextElement());
}*/
rows.add( empData.elementNum(0) );
rows.add( empData.elementNum(1) );
rows.add( empData.elementNum(2) );
}
public int getColumnCount() {
return COL_NAMES.length;
}
public int getRowCount() {
System.out.println("Nbre éléments dans le vector : "+rows.size());
return rows.size();
}
public String getColumnName(int col) {
return COL_NAMES[col];
}
public Object getValueAt(int row, int column) {
Vector tmprow = new Vector();
tmprow = (Vector)rows.elementAt(row);
return tmprow.elementAt(column);
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
public boolean isCellEditable(int row, int col) {
return false;
}
}
Je suis obligé de remplir le vector à la mano sinon il plante dés l'instanciation de EmpTableModèle ?
J'ai testé le passage des données au constructeur -> pas de pbs
Ca semble venir du vector mais je vois pas
Voici la mèthode qui créer la JTable :
package societe.traitement;
import java.awt.*;
import java.io.*;
import java.util.*;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import societe.donnees.employe.*;
import societe.stockage.*;
import societe.traitement.EmpTableModel;
import societe.ihm.MainFrame;
import societe.ihm.AboutDialog;
...
public void actionAfficherEmploye() {
EmpTableModel myModel = new EmpTableModel(cListe);
JTable tableEmp = new JTable(myModel);
tableEmp.setPreferredScrollableViewportSize(new Dimension(500, 70));
JScrollPane scrollPane = new JScrollPane(tableEmp);
mainFrame.add(scrollPane, BorderLayout.CENTER);
mainFrame.pack();
}
...