Partage
  • Partager sur Facebook
  • Partager sur Twitter

jprogressbar + ResultSet

java

    11 avril 2007 à 11:29:00

    Salut!

    Je voudrais savoir comment créer une Jprogressbar sur le contenu d'un ResultSet:

    L'idée est que j'affiche des données provenant d'une base de données et je voudrais que la barre avance en temps réel à chaque fois qu'il y a un nouvel enregistrement dans le ResultSet (sachant que je connais exactement le nobre d'enregistrement qu'on devrait avoir à la fin.

    Voici mon code : le problème est que la barre ne progresse que si j'enlève le test sur le traitement.(la partie test en gras)

    Si quelqu'un a une idée sur l'origine du problème n'hésitez pas. Merci bcp!!


    package testt

    import javax.swing.*;
    import java.awt.*;
    import java.sql.DriverManager;
    import java.sql.*;
    import java.util.Timer;
    import java.util.TimerTask;

    public class test extends JFrame{
    JProgressBar b;

    public test(){
    super("ma barre");
    this.setBounds(200,200,200,50);
    b=new JProgressBar(0,50);
    this.getContentPane().add(b);
    this.setVisible(true);
    Thread t=new ThreadAvanceBarre(b);
    t.start();
    }


    public static void main(String args[]){
    new test();
    }
    //La classe qui correspond au thread pour faire avancer la barre       
    class ThreadAvanceBarre extends Thread {
    JProgressBar barre;


    public ThreadAvanceBarre(JProgressBar b){
    barre=b;
     
    }

    public void run(){
     
          // Charger le pilote Oracle
                try {
                  DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
         
                  // Connexion à la base de données
                  Connection conn = DriverManager.getConnection( "jdbc:oracle:thin:@127.0.0.1:1521:fegte", "user", "password");
         
                  // Requête SQL
                  //Création d'un objet requête
                  Statement stmt = conn.createStatement();
                 
              final Statement stmt1 = conn.createStatement();
                  //Envoyer la requête et récupérer le résulatat
                  ResultSet rset = stmt.executeQuery("select count(*) from fastpa where nolan=2");
         
                  // Affichage du résultat
                  while (rset.next()) {
                   
                    final String max = rset.getString(1);
                   
                    int maxx=Integer.parseInt(max);
         
                    System.out.println(max);
         
                    barre.setMaximum(maxx);
                    barre.setMinimum(0);
                   
                   
                      try {
                        //sleep(50);
                      }
                      catch (Exception e) {
                        System.err.println(e);
                      }
                     
                      /*** Traitement de test sur la Jprogressbar ***/
                      Timer minuteur = new Timer();
                      TimerTask tache = new TimerTask() {
                public void run()  {
                      //ResultSet rset1 = null;
                      try {
                      ResultSet rset1 = stmt1.executeQuery("select * from fstcrd where dafin is not null");
                        while (rset1.rowInserted())
                        {
                          System.out.println("test");
                         // barre.setValue(barre.getValue() + 1);
                        }
                      }                  catch (SQLException ex) {
                      }
                  }
              };
              minuteur.schedule(tache, 0, 100);

                  }
                }

             catch (SQLException ex) {
             }

             
    }//fin run
    }
      }//fin classe



    • Partager sur Facebook
    • Partager sur Twitter
      12 avril 2007 à 14:15:52

      Salut!!

      J'ai fait ce code et il marche mais le problème est que quand le programme qui est en arrière plan termine la progressbar s'arrête (même si elle n'a pas encore atteint la fin)

      Est ce que quelqu'un sait comment faire le nombre d'enregistrement qui vont être ajoutés à la taille de la progressbar.

      Merci pour votre aide!!


      package oracle_cnn;

      import javax.swing.*;
      import java.awt.*;
      import java.util.Timer;
      import java.util.TimerTask;
      import javax.swing.event.*;
      import java.awt.Dimension;
      import java.sql.*;
      import java.util.Vector;
      import javax.swing.table.DefaultTableModel;


      public class test extends JFrame{
      JProgressBar b;

      public test(){
      super("ma barre");
      this.setBounds(200,200,200,50);
      b=new JProgressBar(0,50);
      this.getContentPane().add(b);
      this.setVisible(true);
      Thread t=new ThreadAvanceBarre(b);
      t.start();
      }


      public static void main(String args[]){
      new test();
      }
      //La classe qui correspond au thread pour faire avancer la barre
      class ThreadAvanceBarre extends Thread {
      JProgressBar barre;

      public ThreadAvanceBarre(JProgressBar b){
      barre=b;
      }

      public void run(){


            try {
                    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
                  }
                  catch (SQLException ex) {
                  }
           
                             // Connexion à la base de données
                            Connection conn = null;
                            try {
                                   conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ubixstg", "OPS$BRU","KALIMA");
                            }
                            catch (SQLException ex1) {
                            }
           
                             //Envoyer la requête et récupérer le résulatat
           
                            Statement stmt2 = null;
                            try {
                              stmt2 = conn.createStatement();
                            }
                            catch (SQLException ex2) {
                            }
           
           
                            ResultSet rset2 = null;
                            try {
                              rset2 = stmt2.executeQuery(
                                  "select count(*) from fstcrd where dafin is not null");
                            }
                            catch (SQLException ex3) {
                            }
                              String ancienne="";
                                try {
                                  while (rset2.next()) {
           
                                    ancienne = rset2.getString(1);
                                  }
                                }
                                catch (SQLException ex4) {
                                }
           
                            System.out.println("L'ancienne valeur est"+ancienne); //ce que la table contient avant le traitement
           
                            final int bInt = Integer.parseInt(ancienne);


      /**********************************************Avant le passage du timer ***********************************/
            Timer minuteur = new Timer();


                 TimerTask tache = new TimerTask() {
                     public void run() {


                       try {
               DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
             }
             catch (SQLException ex) {
             }
                // Connexion à la base de données

           try {
             Connection conn1 = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ubixstg", "user", "password");


                         System.out.println("coucou !");

                         // Charger le pilote Oracle


                 // Requête SQL
                 //Création d'un objet requête
                 Statement stmt1 = conn1.createStatement ();
                 //Envoyer la requête et récupérer le résulatat
                 ResultSet rset1 = stmt1.executeQuery ("select count(*) from fstcrd where dafin is not null");


                String nouvelle="";
                int aInt=0;
                int max=bInt+3;
               
              // Affichage du résultat
                 while (rset1.next ())
                 {
                   nouvelle = rset1.getString(1);
                   System.out.println("La nouvelle valeur est"+nouvelle); //ce que la table contient pendant le traitement         
                   aInt = Integer.parseInt(nouvelle);
                   barre.setMaximum(bInt+3);
                   barre.setMinimum(0);
                   if (aInt != max)
                  {
                   
                   System.out.println("Programme en marche");
                   barre.setValue(barre.getValue()+1);}
                   else
                 {System.out.println("Programme terminé");
                  try {
                    sleep(50);
                  }
                  catch (InterruptedException ex1) {
                  }
                  }

                 }       
                 
                 System.out.println(aInt);
                 

                //  while (barre.getValue()<100) {
               //  try {
              // sleep(100);
              //   } catch(Exception e){
                // System.err.println(e);
              //   }
               
                // }//fin while

                 }
                 catch (SQLException ex) {
                 }

                     }
                 };
                 minuteur.schedule(tache, 0, 100);

                        /** fin du timer **/



      }//fin run
      }
        }//fin classe

      • Partager sur Facebook
      • Partager sur Twitter

      jprogressbar + ResultSet

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown