salut
je suis entrain de developper une application java 6 en utilisant swing.
J'ai utilisé la bibliothéque swingx et on particulier JXLoginPane comme interface d'authentification.
Ce que je n'arrive pas à comprendre est comment se fait lacommunication entre EDT et le thread main: ce que j'ai tenu est qu'on lançant le main de l'application , c'est le thread main qui est lancé.
Voici mon code d'authentification
J'ai constaté que le THread EDT est lancé dans le listener frame.addWindowListener (sans même que je précis),mais mon probléme vient maintenant:lorsque l'authentification réussit, je fai appele à l''interface principale de mon application(AcceuilJFrame.getInstance()),depuis ce moment j'ai constaté que dans toute mon application c'est le Thread EDT qui est exécuté!
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 AuthentificationController loginService = new AuthentificationController(); DefaultUserNameStore userNames = new DefaultUserNameStore(); Preferences appPrefs = Preferences .userNodeForPackage(AuthentificationVue.class); userNames.setPreferences(appPrefs.node("login")); frame = JXLoginPane.showLoginFrame( loginService, null, userNames); frame.setTitle("Authentification"); frame.setIconImage(Images.application.getImage()); frame.getPanel().setMessage("Entrez votre Login et mot de passe"); System.out.println("isEventDispatchThread1="+SwingUtilities.isEventDispatchThread()); System.out.println("Thread1="+Thread.currentThread().getName()); frame.addWindowListener(new WindowAdapter() { public void windowClosed(java.awt.event.WindowEvent e) { System.out.println("isEventDispatchThread2="+SwingUtilities.isEventDispatchThread()); System.out.println("Thread2="+Thread.currentThread().getName()); JXLoginPane.Status status = frame.getStatus(); // make sure the login was successful if (status == JXLoginPane.Status.SUCCEEDED) { AcceuilJFrame.getInstance(); } else { //System.out.println("Login Failed: " + status); } } }); frame.setVisible(true);
Comment éviter ce probléme?
Comment je puisse faire appel , dans des traitements métiers ,au thread main.
Partager