Ajout d'une ligne editable à une jTable

RouRa22 Messages postés 28 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 19 octobre 2009 - 28 janv. 2009 à 10:20
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 - 29 janv. 2009 à 22:21
Salut,

J'ai une jTable remplie à partir de la base de données, je veux
maitenant lorsque l'utilisateur appuie sur le bouton "+" une ligne vide
éditable s'ajoute à la jTable, il edite la ligne ajoutée puis il
enregistre son travail.


Pour mon code, j'ai raisonné de la façon suivante: lorsqu'il appuie sur
le bouton"+" je fais un insert into... et puis je rempli de nouveau ma
table à partir de la BD. Lorsqu'il apuie sur enregistrer je mets dans
mon code update


Le problème maintenant est lorsque l'utilisateur essaye d'editer la
ligne ajoutée, elle est editable ça va mais lorsqu'il passe à la
cellule suivante tout s'efface.

Est ce que quelqu'un à une idée!!!
Voici mon code
 
publicclass DocumentModel extends AbstractTableModel {

private java.sql.Statement stmt;
privateint colnum=3;
privateint rownum;
private String[] colNames={
"اNom du fichier","Commentaires","code dossier"
};
private ArrayList<String[]> ResultSets;
 
public DocumentModel(ResultSet rs){

ResultSets=new ArrayList<String[]>();
try{
while(rs.next()){

String[] row={
rs.getString("CODEDOSSIER"), rs.getString("COMMENTAIRES"),rs.getString("NOMFICHIER")
};

ResultSets.add(row);

}
}
catch(Exception e){
System.out.println("Exception in DocumentModel");
}
}
public Object getValueAt(int rowindex, int columnindex){

String[] row=ResultSets.get(rowindex);
return row[columnindex];

}
 
publicint getRowCount(){
return ResultSets.size();
}
 
publicint getColumnCount(){
return colnum;
}
 
public String getColumnName(int param){
 
return colNames[param];
}
publicvoid removeNewRow(int row)
{
fireTableDataChanged();
}
publicvoid clearDownload(int row){
ResultSets.remove(row);
fireTableRowsDeleted(row, row);
}

}

Merci d'avance

3 réponses

uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
28 janv. 2009 à 13:13
Normalement nous devons implémenter la méthode setValueAt(..) pour mettre à jour les données auxquelles accède getValueAt.
0
RouRa22 Messages postés 28 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 19 octobre 2009
29 janv. 2009 à 09:26
public void setValueAt(Object aValue, int rowIndex, int columnIndex)
        {
           
        }
Quel serai le code de la méthode, vu que j'ai pas la jTable déclaré explicitement dans le model?
Merci bien
0
uhrand Messages postés 491 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 15 juillet 2012 9
29 janv. 2009 à 22:21
Pour accéder dans la liste "ResultSets" aux données de la ligne (rowIndex), tu utilise la méthode get, comme tu l'as déjà fais dans ton code. Dans le String Array tu place la valeur (aValue) sur la colonne en question (columnIndex). Pour terminer, tu appelle "fireTableCellUpdated".
0