Prbleme jtable

salut !! j'essai d'afficher ma base dans un jtable mais il m'affiche que la 5éme ligne dans le jtable !!

else if (var==bt3){

try
{
connection();
st=con.createStatement();
String req="select* from Fournisseur";
rs=st.executeQuery(req);
while(rs.next())
{
int j=0;
int i=0;

data[j][i]= rs.getString("id");
data[j][i+1]= rs.getString("nom");
data[j][i+2]= rs.getString("prenom");
data[j][i+3]= rs.getString("adresse");
data[j][i+4]= rs.getString("n° telephone");

j++;

}

TableColumn column = null;
for(int i=0;i<5 ; i++){
column= table.getColumnModel().getColumn(i);
column.setPreferredWidth(50);
}
}
catch(SQLException e3){e3.printStackTrace(); }
}

ci quelqu'un peut m'aider je serais tres reconnaissant !! merci :)

2 réponses

  1. c'est réglé merci :) mais je veux actualiser mon jtable comment je fais!!
    1. Modérateur
      J'ai déjà anticipé cette question en te donnant des liens sur l'utilisation des TableModel et en particulier une discussion pour rafraîchir un JTable (ce qui se fait automatiquement si on utilise les Model)
    2. avec ma méthode comment je fais parce que je doit effacer tout et recommencer !! désole :)
    3. Modérateur
      "je doit effacer tout et recommencer"
      Ce ne serait pas forcément une mauvaise idée, puisque c'est pour faire mieux après ;-)

      Il faudrait tester pour vérifier que l'adaptation est correcte mais sans tout changer ce serait quelque chose comme ceci :

      String[] headers = {"id","nom","prenom","adresse","n° telephone"};
       
      for (int i=0; rs.next(); i++)
      for (int j=0; j<headers.length; j++)
          data[i][j] = rs.getString(headers[j]);
      
      table.setModel(new DefaultTableModel(data,headers));
  2. Modérateur
    j est toujours réinitialisé à 0 dans ton while ! Tu peux faire comme ceci :

    for(int j=0; rs.next(); j++) 
    {
        data[j][0] = rs.getString("id"); 
        data[j][1] = rs.getString("nom"); 
        data[j][2] = rs.getString("prenom"); 
        data[j][3] = rs.getString("adresse"); 
        data[j][4] = rs.getString("n° telephone"); 
    }

    Cependant, je t'invite à utiliser un TableModel, et en particulier DefaultTableModel qui permet d'ajouter des lignes plus simplement (et plus proprement) que modifier les données data[j][i] qui nécessite d'avoir au préalable initialiser data[][] avec une taille au départ qui peut s'avérer par la suite tantôt trop grande (et on a plein de lignes vides dans la JTable) tantôt trop petite et ça plante !

    Un exemple ici : Raffraichir un Jtable