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:
le problème est que ce thread d'écoute ne peut pas accèder sur le web browser pour changer l'URL.
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(); }
J'ai toujours le message d'erreur :
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???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)
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???
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); } } }); }
Merci d'avance
Partager