Bonjour à tous,
voila, j'ai un soucis de focus dans mon programme :
L'icone du systemTray possède un menu, qui ouvre différentes fenetre, etc...(rien de nouveau quoi)
Depuis le systemTray, je voudrais faire un clic (gauche) sur l'icone pour afficher une autre JFrame, qui a besoin du focus.
J'ai donc mon PopupMenu qui marche impec, quand il ouvre les fenêtres celles ci ont le focus, OK.
Par contre, la JFrame qui s'ouvre avec le mouseListener ne possède pas le focus... (la barre des programmes n'est même pas en surbrillance...)
Je ne comprends pas pourquoi.
Voici mon code :
et la Classe qui gère la souris :
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
78
79 package alfred; import alfred.interpréteur.Interpréteur; import alfred.interpréteur.SystemTrayMouseListener; import java.awt.AWTException; import java.awt.Image; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.SystemTray; import java.awt.Toolkit; import java.awt.TrayIcon; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /** * * @author ivan */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { final TrayIcon trayIcon; if (SystemTray.isSupported()) { SystemTray tray = SystemTray.getSystemTray(); Image image = Toolkit.getDefaultToolkit().getImage("Graphisme/Alfred.gif"); SystemTrayMouseListener mouseListener = new SystemTrayMouseListener(); ActionListener exitListener = new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Au revoir..."); System.exit(0); } }; ActionListener ChatListener = new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Action chat listener !"); new Interpréteur(); } }; PopupMenu popup = new PopupMenu(); MenuItem defaultItem = new MenuItem("Au revoir"); defaultItem.addActionListener(exitListener); popup.add(defaultItem); MenuItem testFocus = new MenuItem("Discuter"); testFocus.addActionListener(ChatListener); popup.add(testFocus); trayIcon = new TrayIcon(image, "Alfred", popup); trayIcon.setImageAutoSize(true); trayIcon.addMouseListener(mouseListener); try { tray.add(trayIcon); } catch (AWTException e) { System.err.println("Impossible d'ajouter Alfred dans la barre de taches."); } } else { System.err.println("Alfred a besoin d'une barre de taches"); } } }
Voila, c'est surement rien du tout, mais je n'arrive vraiment pas à trouver, pourquoi le mouseListener ouvre la fenêtre, mais sans le Focus...
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 package alfred.interpréteur; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; /** * * @author ivan */ public class SystemTrayMouseListener implements MouseListener{ public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) { new Interpréteur(); } } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } }
D'ailleurs, si on fait le lien dans le popupMenu ("Discuter"), la fenetre s'ouvre bien et avec le focus, alors je soupsonne plutot un subtil détail que je ne connais pas..
Merci de bien vouloir m'aider...![]()
Partager