# System Tray verwenden



## joschika77 (7. Okt 2003)

Hi Leute!

Mein Projekt ist endlich fertig.
Nun zum Schluß wollte ich beim minimieren das Programm in den System Tray schieben.
Kennt sich jemand mit System Tray aus?
Habe dazu nirgends was gefunden.

Gruß Ronn


----------



## Stefan1200 (7. Okt 2003)

Ja, das funktioniert mit einem Zusatz. Das kann man unter folgender URL runter laden:
http://www.amdesign.org/org/systrayicon/install-win.html

Einfach mal durchlesen, ist relativ einfach.


----------



## joschika77 (8. Okt 2003)

Hallo!

Setzt man da nicht nur das Icon?
Wie sage ich ihm das er beim minimieren alles in den Sys Tray verschiebt?

Gruß Ronn


----------



## Stefan1200 (8. Okt 2003)

Ronnules hat gesagt.:
			
		

> Hallo!
> 
> Setzt man da nicht nur das Icon?
> Wie sage ich ihm das er beim minimieren alles in den Sys Tray verschiebt?
> ...



Ja Logisch, im Systemtray hat jedes Programm nur ein Ikon, das auf Mausklicks reagiert. Und genau das kannst du mit dem SysTrayIcon von http://www.amdesign.org/org/systrayicon/install-win.html 
unter Java Programmieren. Das Fenster kannst du über das SysTrayIcon mit setVisible(false); zu, und mit setVisible(true); wieder auf machen. Geht wunderbar, habe ich auch schon programmiert.

So wird bei einem meiner Programme folgender Code ausgeführt, wenn ich mit der Linken Maustaste auf das SysTrayIcon klicke:


```
if (this.isVisible())
{
    this.setVisible(false);
}
else
{
    this.setVisible(true);
}
```

Nur manchmal habe ich Probleme, das nach dem öffnen des Fensters über das SysTrayIcon das Fenster nicht aktiv ist, worauf ich leider nicht weiss, wie ich darauf einfluss nehme.


----------



## joschika77 (8. Okt 2003)

Muß ich denn zwei Klassen haben?(SysTrayException und SysTrayIcon)
Ich bekomme das irgendwie nicht eingebunden.
Hilfe währe echt sehr sehr nett.

Gruß Ronn


----------



## Stefan1200 (8. Okt 2003)

Also in einer der beiden Programme, die das SysTrayIcon verwenden, sieht der Source dafür so aus:


```
SysTrayIcon sysTray = new SysTrayIcon(); // Instanziert die Methode f¸r den SystemTray unter Windows
	String sysTrayIcon = "tray.ICO";
	String sysTrayToolTip = " Grosse Schuluhr V1.2 ";

		try
		{
			sysTray.setIcon(sysTrayIcon, sysTrayToolTip);  // F¸gt dem SystemTray mit einem Ikon und Tooltip unter Windows hinzu
		}
		catch(SysTrayIconException exc)  // F‰ngt Fehler ab
		{
			System.out.println(exc.getMessage());
		}
		
		if (minArg)
		{
			sysTray.addMenuItem("Zeigen",false);  // F¸gt ein SystemTray Men¸ Eintrag hinzu
			sysTray.addMenuItem("Verstecken",true);
		}
		else
		{
			sysTray.addMenuItem("Zeigen",true);
			sysTray.addMenuItem("Verstecken",false);
		}
		sysTray.addMenuItem("Info",false,true);
		sysTray.addMenuItem("Beenden");
		sysTray.setPopupMenu(2);
		
		sysTray.addPropertyChangeListener(new java.beans.PropertyChangeListener() {  // Dieser Bereich definiert was man gemacht werden soll
			public final void propertyChange(java.beans.PropertyChangeEvent e) {
				// Left mouse button event listener
				if(e.getPropertyName().equals("LM_Button")) {
					if (isVisible())
					{
						setVisible(false);
						sysTray.replaceItem(1,false);
						sysTray.replaceItem(2,true);
					}
					else
					{
						setVisible(true);
						sysTray.replaceItem(1,true);
						sysTray.replaceItem(2,false);
					}
				}
				// Right mouse button event listener
/*		    	if(e.getPropertyName().equals("RM_Button")) {
		    		// ...
		    	}
*/		    	// "Zeigen" menu item event listener
		    	if(e.getPropertyName().equals("Zeigen")) {
		    		setVisible(true);
					sysTray.replaceItem(1,true);
					sysTray.replaceItem(2,false);
		    	}
		    	// "Verstecken" menu item event listener
		    	if(e.getPropertyName().equals("Verstecken")) {
		    		setVisible(false);
					sysTray.replaceItem(1,false);
					sysTray.replaceItem(2,true);
		    	}
		    	// "Info" menu item event listener
		    	if(e.getPropertyName().equals("Info")) {
					openInfoWindow();
		    	}
		    	// "Exit" menu item event listener
		    	if(e.getPropertyName().equals("Beenden")) {
		    		sysTray.freeMemoryExit();
					setVisible(false);
					dispose();
		    		System.exit(0);
		  		}
		  }
		});
```


Vergesse nicht die Import Anweisungen:

```
import org.amdesign.beans.systrayicon.SysTrayIcon;
import org.amdesign.beans.systrayicon.SysTrayIconException;
```


Und der Ordner org von dem SysTrayIcon muss sich im selben Verzeichnis befinden, wie deine Klassen. Weiterhin muss in diesem Ordner das Tray Ikon als ico Bild Datei liegen. In meinen Source oben muss die Datei heissen: tray.ICO


----------



## bernd (30. Sep 2004)

Stefan1200 hat gesagt.:
			
		

> Ja, das funktioniert mit einem Zusatz. Das kann man unter folgender URL runter laden:
> http://www.amdesign.org/org/systrayicon/install-win.html
> 
> Einfach mal durchlesen, ist relativ einfach.



Der Link funktioniert nicht! :-(


----------



## stev.glasow (14. Nov 2004)

bernd hat gesagt.:
			
		

> Stefan1200 hat gesagt.:
> 
> 
> 
> ...


http://www.amdesign.org/org/systrayicon/


----------

