System Tray verwenden

Status
Nicht offen für weitere Antworten.

joschika77

Bekanntes Mitglied
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
 
Hallo!

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

Gruß Ronn
 
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?

Gruß Ronn

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:

Code:
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.
 
Muß ich denn zwei Klassen haben?(SysTrayException und SysTrayIcon)
Ich bekomme das irgendwie nicht eingebunden.
Hilfe währe echt sehr sehr nett.

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

Code:
	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:
Code:
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
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben