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

Concurrence et multi-thread Java Discussion :

JAva Frame Chriiss web Browser current thread


Sujet :

Concurrence et multi-thread Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 1
    Par défaut JAva Frame Chriiss web Browser current thread
    Bonjour
    J'utilise une frame java qui implémente ActionListener, Runnable. cette frame intègre un webBrowser grace à la bibliothèque dj.native.swing. et un thread qui se connecte sur un serveur socket pour l'interception des évènements et à chaque évènement il affiche un URL dans le webBrowser.
    Breff: ci dessou une partie de mon code:
    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
     
    /*imports*/
     
    import chrriis.common.UIUtils;
    import chrriis.dj.nativeswing.swtimpl.NativeInterface;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.net.Socket;
    ....
     
    public class NewFrame extends Frame implements ActionListener, Runnable {
     
        /** Creates new form NewFrame */
        SimpleWebBrowserExample webBrowser = new SimpleWebBrowserExample();
        String ServHost = "192.168.121.202";
        Thread _t;
        private String baseurl;
     
        Connection connexion;
    }
     
    public NewFrame() throws SQLException, InterruptedException {
            initialization();/* méthode qui initialise les composantes du frame ( Jbuttom, Jlabel....)
            setVisible(true);
            pack();
            start();/*méthode qui initialise le thread d'écoute sur le port socket
            
        }
     
    la méthode run :
    public void run() {
            
            keepTrying = true;
                    while(keepTrying) {
                            AstConnect(ServHost,"id","user","passe");
                            // If we lose our connection or it fails, let's not hammer on asterisk.
                            try {
                                    Thread.sleep(3000);
                            }
                            catch (Exception e) {}
     
                    }
            
        }
     
     void start() {
            _t = new Thread(this);
            _t.start();
            
        }
    le problème est que ce thread d'écoute ne peut pas accèder sur le web browser pour changer l'URL.
    J'ai toujours le message d'erreur :
    Exception in thread "Thread-4" java.lang.IllegalStateException: This call must happen in the AWT Event Dispatch Thread! Please refer to http://java.sun.com/docs/books/tutor...ncy/index.html and http://java.sun.com/javase/6/docs/ap....lang.Runnable)
    J'ai essayer d'associer le thread d'écoute au thread de lancement de la frame. mais ceci plante l'affichage et le frame de s'initialise pas???
    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
     
     public void start() {
            _t = Thread.currentThread();
            _t.start();
     
        }
    la méthode main est la suivante:
        UIUtils.setPreferredLookAndFeel();
            NativeInterface.open();
            NativeInterface.runEventPump();
            java.awt.EventQueue.invokeLater( new Runnable() {
                public void run() {
                    try {
                        try {
                            new NewFrame();
                        } catch (InterruptedException ex) {
                            Logger.getLogger(NewFrame.class.getName()).log(Level.SEVERE, null, ex);
                        }
                    } catch (SQLException ex) {
                        Logger.getLogger(NewFrame.class.getName()).log(Level.SEVERE, null, ex);
                    }
     
                }
            });
        }
    quelqu'un a une idée sur la communication entre les deux thread afin que le thread d'écoute sur le port socket puisse avoir accès sur le webbrowser???

    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Par défaut
    Bonjour,

    L'exception indique que la méthode en question ne peut pas être appelée en dehors du thread AWT, il faut donc utiliser : SwingUtilities.invokeLater(Runnable r) pour l'appeler.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // Dans le Thread d'écoute
    public void run() {
      //.....
      SwingUtilities.invokeLater(new Runnable() {
        public void run() {
          // Action qui doit être faite dans le thread AWT
        }
      });
    }

Discussions similaires

  1. java.lang.IllegalMonitorStateException: current thread not owner
    Par wolf797 dans le forum Général Java
    Réponses: 2
    Dernier message: 16/01/2011, 18h22
  2. web browser en java .. quel composant ?
    Par vdavid1982 dans le forum Composants
    Réponses: 3
    Dernier message: 22/10/2009, 16h08
  3. Composant Web Browser
    Par easty dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 30/10/2005, 18h07
  4. Web browser visible or propriété a false ?
    Par Tempotpo dans le forum Web & réseau
    Réponses: 3
    Dernier message: 11/08/2005, 10h58
  5. Cherche composant Web Browser indépendant
    Par lancelot69 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 31/07/2002, 11h14

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