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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

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