profiter
Messages postés205Date d'inscriptionmercredi 15 juin 2011StatutMembreDernière intervention15 mars 2013
-
16 déc. 2011 à 12:55
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020
-
16 déc. 2011 à 16:03
Bonjour,
j'ai un probleme dans mon tablemodel : je veux ajouter une methode qui permer d'ajouter automatiquement une colonne dans le jtable lors du clic sur un button mais des erreurs comme d'habitude :
voila ma classe qui herite du abstracttablemodel
class MyTableModel extends AbstractTableModel {
private String[] columnNames = new String[lignes];
private Object[][] data = new Object[lignes][colonnes];
//columnNames = entete ;
//data = contenu_table ;
public void affecter(){
this.columnNames = entete ;
this.data = contenu_table ;
}
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public Object getValueAt(int row, int col) {
// System.out.println("suis je");
return data[row][col];
}
/*
* JTable uses this method to determine the default renderer/
* editor for each cell. If we didn't implement this method,
* then the last column would contain text ("true"/"false"),
* rather than a check box.
*/
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
/*
* Don't need to implement this method unless your table's
* editable.
*/
public boolean isCellEditable(int row, int col) {
//Note that the data/cell address is constant,
//no matter where the cell appears onscreen.
if (col < 2) {
return false;
} else {
return true;
}
}
/*
* Don't need to implement this method unless your table's
* data can change.
*/
public void setValueAt(Object value, int row, int col) {
if (DEBUG) {
System.out.println("Setting value at " + row + "," + col
+ " to " + value
+ " (an instance of "
+ value.getClass() + ")");
}
cs_Julien39
Messages postés6414Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention29 juillet 2020372 16 déc. 2011 à 14:07
Bonjour,
Si getValueAt(0, c) est null, tu ne peux pas appeler de méthode dessus. Je pense qu'il faut que tu gères ca, soit en levant une exception soit en retournant null si getValueAt(0, c) est null
profiter
Messages postés205Date d'inscriptionmercredi 15 juin 2011StatutMembreDernière intervention15 mars 20138 16 déc. 2011 à 14:22
merci Julien39 (ca fait bien longtemps qu'on c'est communiquer : je souhaite que tu es bien )
j'ai trouvé l'erreur c'est seulement dans la methode meme la voila corrigé
public void addColumn()
{
int nbRow this.getRowCount(), nbCol this.getColumnCount();
Object[][] tmp = new Object[nbRow][nbRow];
tmp = this.data ;
this.data = new Object[nbRow][nbCol+1];
for(int i = 0 ; i< nbRow ; i++){
for(int j = 0 ;j<= nbCol ; j++){
if(j != nbCol){
this.data[i][j] = tmp[i][j];
}else{
this.data[i][nbCol] = new Double(0);
}
}
}
//Cette méthode permet d'avertir le tableau que les données ont été modifiées
//Ce qui permet une mise à jours complète du tableau
this.fireTableDataChanged();
}
mais cette fois lorsque je clique sur le bouton qui fait apel a cette methode rien ne change dans mon jtable
pour bien eclaircir je me suis basé pour creer cette methode sur celle de addrow qui marche bien la voila :
public void addRow(Object[] data){
int indice 0, nbRow this.getRowCount(), nbCol = this.getColumnCount();
Object temp[][] = this.data;
this.data = new Object[nbRow+1][nbCol];
for(Object[] value : temp)
this.data[indice++] = value;
this.data[indice] = data;
temp = null;
//Cette méthode permet d'avertir le tableau que les données ont été modifiées
//Ce qui permet une mise à jours complète du tableau
this.fireTableDataChanged();
}