IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

thread ,jtable ,jscrollpane


Sujet :

Composants Java

  1. #1
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut thread ,jtable ,jscrollpane
    salut
    j'ai un problème avec les threads j'ai crée deux threads t et t1 ,chaque thread sert à récupérer les donnée d'une table sur jTable
    les deux threads s'executent en parallele
    j'ai crée une classe qui contient les threads mais je ne sais pas faire parallelisme
    ,faire executerles deux threads en parallele puis afficher résultta dans une autre classe créer

    voila la classe qui contient les threads
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    package stock;
    import javax.swing.*;
    import java.sql.*;
    import javax.swing.table.*;
     
     
     
     
    class partition extends Thread {
     
      DefaultTableModel mode15,mode16;
     int j,i;
     public Thread t=new Thread(){
       public void run(){
    Connection conn = null;
    String url = "jdbc:mysql://localhost/facture";
     String userName = "root";
     String password = "ulysse";
     String[] column2 = { "id","nom de famille" };
     mode15 = new DefaultTableModel(column2, 0);
     JTable jTable2 = new JTable(mode15);
    i=0;
        try {
               Class.forName("org.gjt.mm.mysql.Driver").newInstance();
                 conn = DriverManager.getConnection(url, userName, password);
                      Statement instruction = conn.createStatement();
                System.out.println("Connected");
     
         String sql = " SELECT  id3,fa from facture.famille  ";
     
             ResultSet resultat = instruction.executeQuery(sql);
                while (resultat.next()) {
                 mode15.addRow(new String[] {"", "" });
         jTable2.setValueAt(resultat.getString("famille.id3") ,i, 0);
            jTable2.setValueAt(resultat.getString("famille.fa") ,i, 1);
            i++;
          }
         }
       catch (Exception g) {
       System.out.println("ERREUR " + g);
             }
    }
     };
     public Thread t1=new Thread(){
       public void run(){
     
         Connection conn = null;
     String url = "jdbc:mysql://localhost/facture";
      String userName = "root";
      String password = "ulysse";
      String[] column3 = { "id","nom" };
      mode16 = new DefaultTableModel(column3, 0);
      JTable jTable3 = new JTable(mode16);
     j=0;
     
       try {
         Class.forName("org.gjt.mm.mysql.Driver").newInstance();
                conn = DriverManager.getConnection(url, userName, password);
     Statement instruction = conn.createStatement();
       System.out.println("Connected2");
        String sql = " SELECT  d,nom from facture.stock  ";
         ResultSet resultat = instruction.executeQuery(sql);
      while (resultat.next()) {
            mode16.addRow(new String[] {"", "" });
              jTable3.setValueAt(resultat.getString("stock.d") ,j, 0);
          jTable3.setValueAt(resultat.getString("stock.nom") ,j, 1);
      j++;
                                                }
                                                   }
                     catch (Exception g) {
           System.out.println("ERREUR3 " + g);
         }
     
       }
     };
    }

    et le code qui contient la partie d'affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
     
     
    package stock;
     
    import javax.swing.*;
    import java.awt.*;
    import javax.swing.border.*;
    public class stockfamille extends JFrame  {
     
     
     
    stockfamille(){
      setTitle("Fiche produit");
     this.setResizable(false);
     this.setSize(600, 500);
     this.setLocationRelativeTo(null);
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
     
     
     
     
     partition a = new partition();
     a.t.start();
     a.t1.start();
     
     try {
       jbInit();
     }
     catch(Exception e) {
       e.printStackTrace();
     }
    }
    public static void main (String []  args){
          stockfamille d = new stockfamille() ;
            d.setVisible(true);
    }
     
    private void jbInit() throws Exception {
     this.getContentPane().setLayout(null);
        jPanel1.setBorder(null);
        jPanel1.setBounds(new Rectangle(43, 8, 487, 308));
        jPanel1.setLayout(null);
        jScrollPane2.setBounds(new Rectangle(9, 32, 325, 90));
        jScrollPane3.setBounds(new Rectangle(21, 194, 325, 94));
        this.getContentPane().add(jPanel1, null);
        jPanel1.add(jScrollPane2, null);
        jPanel1.add(jScrollPane3, null);
     
    }
    JPanel jPanel1 = new JPanel();
    JScrollPane jScrollPane2 = new JScrollPane();
    JScrollPane jScrollPane3 = new JScrollPane();
     
     
     
    }
    j'espere avoir une réponse merci d'avance

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Par défaut
    Attention, seul le thread AWT est "habilité" à faire des opérations graphiques (le paint des composants).
    Tu dois donc faire en sorte que le code de tes threads ne fasse que des opérations d'alimentation de modèles, et lancer les opérations graphiques ensuite.
    Ceci dit, tu peux quand même déclencher des opérations graphiques dans un thread non AWT en "postant" une demande de rafraichissement graphique au thread AWT, en utilisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SwingUtilities.invokeLater(Runnable r)
    Enfin, si tu veux réaliser une sorte de synchro sur tes threads et ne provoquer le rafraichissement que lorsque les 2 sont terminés, tu vas être obligé de travailler avec 3 threads :
    • tes 2 threads de traitement
    • 1 thread de contrôle, qui provoquera le rafraichissement lorsque les 2 autres seront terminés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    Thread controller = new Thread(new Runnable() {
       public void run() {
          Thread th1 = new Thread(new Runnable() {
              public void run() {
                 // your code 1
              }
          };
          th1.start();
          Thread th2 = new Thread(new Runnable() {
              public void run() {
                 // your code 2
              }
          };
          th2.start();
          th1.join(); // attente de la fin du thread 1
          th2.join(); // attente de la fin du thread 2
          Swing.invokeLater(new Runnable() {
             public void run() {
                // ton code de rafraichissement
             }
          };
       }
    };
    controller.start();
    NB : le thread 'controller' est indispensable. Si tu ne le met pas, les 2 'join' vont s'exécuter dans le thread AWT, et ton GUI va se "freezer" en attendant la fin de thread1 et thread2.

  3. #3
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    salut merci de m'avoir répondre mais j'ai essayé d'vancer mais pas grand chose
    voila la modification
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
     
     
    import javax.swing.*;
    import java.awt.*;
    import javax.swing.border.*;
    public class article extends JFrame  {
     
     
     
    article(){
      setTitle("Fiche produit");
     this.setResizable(false);
     this.setSize(600, 500);
     this.setLocationRelativeTo(null);
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
     
     
     Thread controller = new Thread(new Runnable() {
        public void run() {
           Thread th1 = new Thread(new Runnable() {
               public void run() {
                  // your code 1
               }
           };
           th1.start();
           Thread th2 = new Thread(new Runnable() {
               public void run() {
                  // your code 2
               }
           };
           th2.start();
           th1.join(); // attente de la fin du thread 1
           th2.join(); // attente de la fin du thread 2
           Swing.invokeLater(new Runnable() {
              public void run() {
                 // ton code de rafraichissement
              }
           };
        }
     };
     controller.start();
     
     
     try {
       jbInit();
     }
     catch(Exception e) {
       e.printStackTrace();
     }
    }
    public static void main (String []  args){
          article d = new article() ;
            d.setVisible(true);
    }
     
    private void jbInit() throws Exception {
     this.getContentPane().setLayout(null);
        jPanel1.setBorder(null);
        jPanel1.setBounds(new Rectangle(43, 8, 487, 308));
        jPanel1.setLayout(null);
        jScrollPane2.setBounds(new Rectangle(9, 32, 325, 90));
        jScrollPane3.setBounds(new Rectangle(21, 194, 325, 94));
        this.getContentPane().add(jPanel1, null);
        jPanel1.add(jScrollPane2, null);
        jPanel1.add(jScrollPane3, null);
     
    }
    JPanel jPanel1 = new JPanel();
    JScrollPane jScrollPane2 = new JScrollPane();
    JScrollPane jScrollPane3 = new JScrollPane();
     
     
     
    }
    j'ai des erreurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    "article.java": ')' expected at line 27, column 9
    "article.java": ')' expected at line 33, column 9
    "article.java": ')' expected at line 41, column 9
    "article.java": ')' expected at line 43, column 3
    et qu'est ce que je mets dans le code
    // ton code de rafraichissement ?

  4. #4
    Membre expérimenté

    Étudiant
    Inscrit en
    Mai 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 200
    Par défaut
    Bonjour,

    le message d'erreur donné à la compilation me semble très clair !!!

    Il manque une parenthèse à chaque fois que tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Thread th1 = new Thread(new Runnable() {
               public void run() {
                  // your code 1
               }
           });

  5. #5
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    bonsoir
    j'ai toujours des erreurs avec le code qui ne fonctionne pas
    message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "article.java": cannot resolve symbol: variable Swing  at line 37, column 8

    et en plus qu'est que je dois ajouter dans cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
       // ton code de rafraichissement

  6. #6
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    qui peut m'aider à résoudre le problème c'est urgent
    merci

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    Le monsieur, il a dit SwingUtilities, pas Swing tout court ! Nanmého ! Faut parfois _bien_ lire !

  8. #8
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    Citation Envoyé par dingoth Voir le message
    Le monsieur, il a dit SwingUtilities, pas Swing tout court ! Nanmého ! Faut parfois _bien_ lire !

    j'ai rien compris ce que tu veux dire

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    tu as écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
           Swing.invokeLater(new Runnable() {
              public void run() {
                 // ton code de rafraichissement
              }
           };
    Il faut écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
           SwingUtilities.invokeLater(new Runnable() {
              public void run() {
                 // ton code de rafraichissement
              }
           };
    Et accessoirement, cela se trouve dans le package javax.swing.*.

    Le code de rafraichissement est le code que tu as écrit qui rafraichit ta table, qui la remet à jour, qui l'actualise, qui en change les données, qui montre les changements...

  10. #10
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    salut
    j'ai deux messages d'erreurs sur
    th1.join();
    th2.join();

    "article.java": unreported exception java.lang.InterruptedException; must be caught or declared to be thrown at line 36, column 12
    "article.java": unreported exception java.lang.InterruptedException; must be caught or declared to be thrown at line 37, column 12

  11. #11
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Tu es impressionnant ulysse031...

    Ce forum n'est pas fait pour t'apprendre le Java (tu es sur le forum SWING) et Developpez.com n'est pas fait pour écrire ton code à ta place...

    1) Lis l'erreur, 2)comprends-la, et 3) corrige la.

    1) je pense que tu y arrives sans problème...

    2) Il te faut un minimum de connaissances en anglais mais aussi connaitre le langage Java un minimum.

    3) La plupart des IDE te permettent de corriger ton code en quelques clics aux bons endroits... Comprendre ce que fait la correction est un plus non négligeable...

    Et oui, la programmation, ca fait réfléchir... Rien ne se fait tout seul... Bon courage

  12. #12
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    j'ai ajouté
    import java.lang.InterruptedException;

    et j'ai toujours erreur

  13. #13
    Membre chevronné Avatar de Claythest
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    558
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 558
    Par défaut
    Mets des try catch autour de tes appels aux méthodes join... Ca pourrait t'aider...

  14. #14
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    bonsoir
    voila la vouvelle modification et je veux savoir si c'est just de ce que je viens de faire créer des threads avec parallelisme (execution deux threads en parallele et afficher le résultat sur les tables )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    Thread controller = new Thread(new Runnable() {
           public void run() {
              Thread th1 = new Thread(new Runnable() {
                  public void run() {
       Connection conn = null;
        String url = "jdbc:mysql://localhost/facture";
         String userName = "root";
         String password = "ulysse";
         String[] column2 = { "id","nom de famille" };
         mode15 = new DefaultTableModel(column2, 0);
          jTable2 = new JTable(mode15);
        i=0;
            try {
                   Class.forName("org.gjt.mm.mysql.Driver").newInstance();
                     conn = DriverManager.getConnection(url, userName, password);
                          Statement instruction = conn.createStatement();
                    System.out.println("Connected");
     
             String sql = " SELECT  id3,fa from facture.famille  ";
     
                 ResultSet resultat = instruction.executeQuery(sql);
                    while (resultat.next()) {
                     mode15.addRow(new String[] {"", "" });
             jTable2.setValueAt(resultat.getString("famille.id3") ,i, 0);
                jTable2.setValueAt(resultat.getString("famille.fa") ,i, 1);
                i++;
              }
     
     
     
             }
           catch (Exception g) {
           System.out.println("ERREUR " + g);
                 }
     
                  }
              });
              th1.start();
              Thread th2 = new Thread(new Runnable() {
                  public void run() {
     
                    Connection conn = null;
        String url = "jdbc:mysql://localhost/facture";
         String userName = "ulysse";
         String password = "mustapha";
     String[] column3 = { "id","nom de stock" };
      mode16 = new DefaultTableModel(column3, 0);
     jTable3 = new JTable(mode16);
     j=0;
     
     
                                      try {
                                      Class.forName("org.gjt.mm.mysql.Driver").newInstance();
                                      conn = DriverManager.getConnection(url, userName, password);
                                      Statement instruction = conn.createStatement();
                                      System.out.println("Connected");
     
               String sql = " SELECT  d,nom from facture.stock  ";
              ResultSet resultat = instruction.executeQuery(sql);
                 while (resultat.next()) {
                                     mode16.addRow(new String[] {"", "" });
                                     jTable3.setValueAt(resultat.getString("stock.d") ,j, 0);
                                      jTable3.setValueAt(resultat.getString("stock.nom") ,j, 1);
                                      j++;
              }
                 }
     
                                                      catch (Exception g) {
                                                      System.out.println("ERREUR " + g);
                                                      }
     
     
                  }
              });
              th2.start();
     
              try {
              th1.join();
              th2.join(); 
              }
              catch(Exception ef)
                                          {
                                              System.out.println( ef );
                                          }
     
     
             SwingUtilities.invokeLater(new Runnable()
              {
                 public void run() {
                  jScrollPane2.setViewportView(jTable2);
                    jScrollPane3.setViewportView(jTable3);
                 }
              });
           }
        });
        controller.start();

  15. #15
    Membre éclairé
    Inscrit en
    Novembre 2006
    Messages
    630
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 630
    Par défaut
    salut
    est ce que le parallelisme est juste

Discussions similaires

  1. Substance thread defilement JScrollPane
    Par Ivelios dans le forum EDT/SwingWorker
    Réponses: 4
    Dernier message: 25/01/2010, 13h33
  2. [JTable + JScrollpane] affichage de la scrollbar impossible
    Par JoNjOn06 dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 11/08/2008, 11h48
  3. JTable & JScrollPane : problèmes de taille
    Par xixi31 dans le forum Composants
    Réponses: 1
    Dernier message: 22/11/2006, 12h02
  4. 1ere colonne fixe Jtable ( JScrollpane )
    Par jdewalqu dans le forum Composants
    Réponses: 5
    Dernier message: 21/02/2006, 16h38
  5. jtable + jscrollpane + case sélectionnée
    Par gorgonite dans le forum Composants
    Réponses: 11
    Dernier message: 15/02/2006, 19h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo