Bonjour,

Je suis confronté à un problème depuis 2 jours et je n'ai toujours pas trouvé la solution qui me satisfasse malgré de nombreuses recherches:

Ce que eux faire est, à priori, assez simple!

Je souhaiterai que, lorsque l'on clique sur le symbole réduire de la fenêtre, celle-ci "disparaisse" de la barre de menu (celle dans laquelle apparaissent toutes les applis réduites: firefox, notepad...) mais qu'un icône apparaissent près de l'horloge ("systray" si j'ai bien compris)

Ce que j'ai réussi à faire pour l'instant:
Lorsque je clique sur le bouton réduire (en haut à droite de ma fenêtre), celle-ci se réduit dans la barre de menu (heureusement! ) et dans le même temps, un icône apparait dans le systray.

Cet icône est personnalisé. Le nom de mon appli apparait si je passe la souris dessus.
Un clic droit me permet d'afficher ou de quitter l'appli.
A noter que si l'appli est réduite dans la barre de menu, la fonction afficher ne fonctionne pas!

Il y a donc certainement un truc que j'ai oublié ou que ne fais pas bien mais je ne vois pas quoi.

Si vous avez des idées et des suggestions, je suis preneur!

Je vous donne mon code pour vous montrer ce que j'ai fait:

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
80
 
...
cadre = new JFrame(Messages.getString("vuePrincipale.0"));
cadre.addWindowListener(this);
...
...
	@Override
	public void windowDeactivated(WindowEvent arg0) {
	}
 
	@Override
	public void windowDeiconified(WindowEvent arg0) {
		 System.out.println("icone en fenetre");
	}
 
	@Override
	public void windowIconified(WindowEvent arg0) {
		//cadre.setExtendedState(cadre.ICONIFIED);
		System.out.println("fentre en icone");
		iconTray();
	}
 
	@Override
	public void windowOpened(WindowEvent arg0) {
	}
 
	public void setTextArea(JTextArea textArea) {
		this.textArea = textArea;
	}
 
	public static JTextArea getTextArea() {
		return textArea;
	}
 
 
 
...
 
 
	private void iconTray() {
		if (SystemTray.isSupported()) {
			System.out.println("SysTray supported");
			// construction du menu et gestion des événements
			PopupMenu popup = new PopupMenu();
			MenuItem démarrer = new MenuItem("Afficher");
			MenuItem quitter = new MenuItem("Quitter");
			ActionListener afficher = new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					cadre.setVisible(true);
				}
			};
			ActionListener arrêter = new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					try {
						tray.displayMessage("Arrêt de l'application XXXXXXXX",
								"A bientôt", TrayIcon.MessageType.INFO);
						Thread.sleep(4000);
					} catch (InterruptedException ex) {
					} finally {
						System.exit(0);
					}
				}
			};
			démarrer.addActionListener(afficher);
			quitter.addActionListener(arrêter);
			popup.add(démarrer);
			popup.add(quitter);
			// création de l'icône
			Image icone = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/util/enveloppe.png"));// Si l'image est dans le jar //$NON-NLS-1$
			tray = new TrayIcon(icone,"XXXXXXX", popup);
			System.out.println("Affichage de l'icone");
			tray.setImageAutoSize(true);
			tray.addActionListener(afficher);
			// placement de l'icône dans la barre de tâche
			try {
				SystemTray.getSystemTray().add(tray);
			} catch (AWTException ex) {
			}
		}
	}

Merci d'avance pour votre aide!

@+

Thomas.