AddRow et RemoveRow dans AbstractModelTable [Résolu]

cs_biboobib 95 Messages postés dimanche 29 juillet 2007Date d'inscription 27 août 2011 Dernière intervention - 29 mars 2008 à 15:33 - Dernière réponse :  Utilisateur anonyme
- 3 avril 2008 à 06:32
Slt vous tous..

Jé fai un Model  AbstractModelTable a tous mes JTable parceque et d'prés mes modeste connaissances c'est Plus pratique que le DefaultModeltable lorsque nos donneés proviennent d'une BDD..!

mais là j'ai rencontré une probléme avc la suppression et l'ajout des lignes dans Le JTable!! car les methodes prédefini AddRow() et RemoveRow() sont accessible qu'avc le DefaultModelTable..!!

j'ai besoin de ca pr bien manipuler le JTable et La BDD au méme temp!!

 je continue mes recherches et mes essai en attendant vos réponses!

merci d'avance!!
Afficher la suite 

9 réponses

Répondre au sujet
Utilisateur anonyme - 30 mars 2008 à 10:07
+3
Utile
Tu dis que data[0].size() te donne le nombre de lignes donc data[i] est une colonne. Cependant, dans removeRow, tu boucles sur le nombre de lignes au lieu de boucler sur le nombre de colonnes donc il y a bien un problème. Tu devrais retirer dans chaque colonne l'élément correspondant à la ligne à supprimer. Selon moi, remplace donc tout simplement getRowCount() par getColumnCount() dans ta méthode removeRow(int row).

Pour addRow(Vector rowData), je propose que tu fasses comme pour la méthode removeRow une fois corrigée mais en faisant plutôt data[i].add(rowData.get(i));

Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Utilisateur anonyme
cs_biboobib 95 Messages postés dimanche 29 juillet 2007Date d'inscription 27 août 2011 Dernière intervention - 30 mars 2008 à 23:36
+3
Utile
 slt..!! j'ai essayé ta méthode mais ne marche pas... et voilà j'ai trouver une solution !!

//ajout de une ligne
public void addRow(int row,Object value)
      {
        for (int i = 0; i < getColumnCount(); i++)
          data[i].add(row,value);
          fireTableRowsInserted(row,row);
    }

// l'action du Boutton d'ajout:

    String s=" ";
    tmp.addRow(tmp.getRowCount(),s);
   
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_biboobib
Utilisateur anonyme - 29 mars 2008 à 18:00
0
Utile
Pourquoi n'étends-tu pas la classe DefaultTableModel? Ensuite, tu pourrais redéfinir juste les comportements nécessaires.

Commenter la réponse de Utilisateur anonyme
cs_biboobib 95 Messages postés dimanche 29 juillet 2007Date d'inscription 27 août 2011 Dernière intervention - 29 mars 2008 à 18:08
0
Utile
merci mais tu peu etre un peu claire!!  car je croi que la class AbstractModelTable me convient plus..!! et si la class DefaultModelTable ne me pose pas de problem avec La BDD.. je  l'essayerai !! alors t pense koi? 
Commenter la réponse de cs_biboobib
Utilisateur anonyme - 29 mars 2008 à 19:09
0
Utile
Excuse moi mais je pense que tu dis n'importe quoi. Je ne vois pas en quoi utiliser AbstractTableModel conviendrait mieux à ta base de données. Je te suggère soit de te contenter du modèle par défaut soit de créer une classe qui étend DefaultTableModel. Tu peux ensuite redéfinir certaines méthodes si tu veux faire des choses qui ne sont pas implémentées dans le model par défaut.

Personnellement, moi je ferais juste ma_jtable.getModel().addRow(...);
Pourquoi marques-tu "AddRow"? D'après les conventions Java, les méthodes ne commencent jamais par une majuscule.

Commenter la réponse de Utilisateur anonyme
cs_biboobib 95 Messages postés dimanche 29 juillet 2007Date d'inscription 27 août 2011 Dernière intervention - 30 mars 2008 à 00:01
0
Utile
désolé chèr gouessj ...mais c toi qui comprend pas là..lool!! biensur j'ai crée une class qui extend de la class AbstractModelTable et J'ai redéfini mes methodes nécessaire!!

au ts cas j'ai  reussi a crée une methode pr la supression d'un row et ca marche bien sans utiliser le DefaultModelTable..! mais le problém pérsiste avec la methode addRow() a crée!! j'ai essayé mais

voilà mon code pour mieux comprendre amigo au cas où !!!!

import java.util.ArrayList;
 import javax.swing.table.AbstractTableModel;

 public class TableModelPerso extends AbstractTableModel {
   private String [] labelColonne; //Les entêtes des colonnes
   private ArrayList [] data; //Les données

   public TableModelPerso (String [] titres) {
     labelColonne = titres;

     //On initialise la structure de donnée
     data = new ArrayList[labelColonne.length];
     for (int i = 0; i < labelColonne.length;i++)
       data[i] = new ArrayList();
   }

   //Fonctions qu'il est nécéssaire de surcharger

   public String  getColumnName  (int col)          {return labelColonne[col].toString();}
   public int     getRowCount    ()                 {return data[0].size();}
   public int     getColumnCount ()                 {return labelColonne.length;}
   public boolean isCellEditable (int row, int col) {return false; }
   public Object  getValueAt     (int row, int col) {return data[col].get(row);}

   //On ajoute , on remplace ou on supprimer suivant les valeurs entrées...
   public void setValueAt(Object value, int row, int col) {
     if (value != null) {
       if (row >= data[col].size())
         data[col].add(row,value);
       else
         data[col].set(row,value);
     } else
       for (int i = 0; i < getColumnCount(); i++)
         data[i].remove(row);
     fireTableDataChanged();
   }

   //Permet de tout éffacer
   public void clear () {
     for (int i = 0;i < labelColonne.length;i++)
       data[i].clear();
     fireTableDataChanged();
   }
  
   public void removeRow(int row)
   {    for (int i = 0; i < getRowCount(); i++)
            data[i].remove(row);
        fireTableDataChanged();
}
  
public void addRow() {  ??????  };

 }
 
Commenter la réponse de cs_biboobib
Utilisateur anonyme - 31 mars 2008 à 06:58
0
Utile
Bonjour

Lis bien ce que je t'avais proposé. Et pourquoi ma solution ne marche pas? A mon avis, si tu ajoutes fireTableRowsInserted(row,row) dans ma solution à la place de fireTableDataChanged(), ça marche autant que la tienne puisque, vu ce que tu fais dans ton bouton d'ajout, ça revient au même. La correction que je propose pour ta méthode removeRow reste valable...

Commenter la réponse de Utilisateur anonyme
cs_biboobib 95 Messages postés dimanche 29 juillet 2007Date d'inscription 27 août 2011 Dernière intervention - 2 avril 2008 à 22:33
0
Utile
ok Merci.. té un mec géniale!! et j vai réessayé ta méthode.. ma la mienne fonctionne bien!! thnx
Commenter la réponse de cs_biboobib
Utilisateur anonyme - 3 avril 2008 à 06:32
0
Utile
Bonjour

Merci. C'est juste que je n'aimerais pas que ton programme marche mal à cause d'une petite faute d'étourderie. Bon courage.

Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.