Insérer une colonne dans un jtable

Résolu
Bonjour,

Je voudrai afficher une colonne (que je calcule après l'avoir récupérer de ma bdd)dans un jtable lorsque je clique sur un bouton OK

Merci de m'aider

Mon code est le suivant:


 
 
 
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
       try {
            int somme=0;
 
            ConnectionDB conn = null;
            conn = new ConnectionDB("jdbc:mysql://localhost/mysql");
            conn.executeUpdate("CREATE DATABASE IF NOT EXISTS one");
 
            conn = new ConnectionDB("jdbc:mysql://localhost/one");
 
               ResultSet rs = conn.executeQuery("SELECT Prev12, Prev13, Retard, Cons12, Stock, Qte, Qte1 FROM feuil3 ");
 
 
 
                 int j=1;
 
 
               while (rs.next()){
 
 
                   int prev1=rs.getInt("Prev12");
                   int prev2=rs.getInt("Prev13");
                   int ret=rs.getInt("Retard");
                   int cons=rs.getInt("Cons12");
                   int Qt=rs.getInt("Qte");
                   int Qt1=rs.getInt("Qte1");
                   int stk=rs.getInt("Stock");
 
 
                   somme=((prev1+prev2+ret-cons)-(Qt+Qt1+stk));
                  // String s=String.valueOf(somme);
                  // System.out.println("somme est:"+somme);
 
                   jTable1.setValueAt(somme,j,1);
 
                    j++;
               }
 
 
 
 
 
        } catch (Exception ex) {
            Logger.getLogger(page2.class.getName()).log(Level.SEVERE, null, ex);
 }
    }











1 réponse

  1. Modérateur
    Le principe des JTable (et quelques autres composants de ce type) c'est d'utiliser des Model. Si tu veux modifier les dimensions de la table ou accéder à ses données, c'est au modèle que tu dois le demander. La JTable ne s'occupe "que" de l'affichage des données.

    Object[] columnNames;
    Object[][] data;
    DefaultTableModel model = new DefaultTableModel(data,columnNames);
    
    JTable jTable = new JTable(model);
    
    int row, column;
    Object aValue;
    model.setValueAt(aValue,row,column);
    
    Object columnName;
    Object[] columnData;
    model.addColumn(columnName, columnData);
    
    Object[] rowData;
    model.addRow(rowData);

    Remarque : il est important de fermer tes connexions, avec conn.close(), parce qu'elles ne vont pas se fermer toutes seules. En s'accumulant en mémoire elles peuvent à terme causer une OutOfMemoryError.
    1
    1. Merci pour ton aide...
      J'ai aussi trouvé une solution
      Tu as raison pour les connexions il faudrait que je les fermes :)
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
      
             try {
                  int somme=0;
      
                  DefaultTableModel model = new DefaultTableModel();
      
      
                  ConnectionDB conn = null;
                  conn = new ConnectionDB("jdbc:mysql://localhost/mysql");
                  conn.executeUpdate("CREATE DATABASE IF NOT EXISTS one");
      
                  conn = new ConnectionDB("jdbc:mysql://localhost/one");
      
                     ResultSet rs = conn.executeQuery(" SELECT  Prev12, Prev13, Retard, Cons12, Stock, Qte, Qte1 FROM feuil3 ");
      
      
                       int j=0;
      
      
                    while (rs.next())
      
                    {
                         int prev1=rs.getInt("Prev12");
                         int prev2=rs.getInt("Prev13");
                         int ret=rs.getInt("Retard");
                         int cons=rs.getInt("Cons12");
                         int Qt=rs.getInt("Qte");
                         int Qt1=rs.getInt("Qte1");
                         int stk=rs.getInt("Stock");
      
      
      
      
                         somme=((prev1+prev2+ret-cons)-(Qt+Qt1+stk));
                         String s=String.valueOf(somme);
      
      
                         jTable1.setValueAt(somme,j,0);
                         j++;
      
      
      
      
      
                   }
      
      
      
      
      
      
      
              } catch (Exception ex) {
                  Logger.getLogger(page2.class.getName()).log(Level.SEVERE, null, ex);
       }
          
      
          }
      
      
      
      
      0