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