Problem mit TrayIcon unter Windows/Linux

Raziell

Bekanntes Mitglied
Hallo zusammen,
habe folgende Probleme mit der Darstellung des TrayIcon.

Wenn ich unter Windows die jar direkt starte wird das TrayIcon kaputt dargestellt.
Wenn ich die jar über Konsole ausführe ist alles ok genau wie über die eclipse.

Unter Linux ist das TrayIcon nicht transparent. (Scheint aber ein bereits seit einigen Jahren bekannter Bug zu sein)

Zumindest das seltsame Verhalten unter Windows kann nicht normal sein oder?

Danke
 
Schwer zu sagen hab jetzt aktuell kein Windows hier am laufen müsste den Screenshot dann heute Abend nachreichen.

Wenn ich die Jar über cmd starte ist das Icon genau wie im original mit transparenten Stellen.

Es handelt sich um ein PNG. Wenn ich die Jar direkt ausführe ist die transparentz teilweise kaputt und an den stellen wo sie kaputt ist sind hellblaue "Farbflecken" zu sehen.
 
Hier nochmal ein Screenshot.

Das TrayIcon wird so hinzugefügt:

Java:
		if (SystemTray.isSupported()) {
			SystemTray tray = SystemTray.getSystemTray();

			PopupMenu popup = new PopupMenu();
			trayItemOpen = new MenuItem("Öffnen");
			trayItemClose = new MenuItem("Beenden");
			trayItemOpen.addActionListener(this);
			trayItemClose.addActionListener(this);
			popup.add(trayItemOpen);
			popup.addSeparator();
			popup.add(trayItemClose);

			trayIcon = new TrayIcon(icon, "", popup);
			trayIcon.setImageAutoSize(true);

			try {
				tray.add(trayIcon);
			} catch (AWTException e) {
				Logger.getLogger(getClass()).error("TrayIcon could not be added", e);
			}
		}

Links -> direkt von Jar gestartet
Rechts -> aus der eclipse( bzw. über cmd) gestartet
 
Zuletzt bearbeitet:
Hast du schon überprüft ob
  • die installierte JRE die gleiche wie die vom Eclipse ist? (eventuell Java Updaten)
  • der Fehler mit dem Autoresize zusammenhängt?
 
auch interessant wäre zu wissen woher "icon" kommt ... bzw wie dieses geladen wird ...
wenn es innerhalb des JAR liegt solltest du [c]this.getClass().getResource()[/c] bzw [c]this.getClass().getResourceAsStream()[/c] *je nachem wie du dann das file weiter verarbeitest* verwenden ...
alles was mit File zu tun hat funktioniert zwar in IDEs und auf der CMD *so lange man im richtigen verzeichnis ist* ... aber so bald man das ganze dann als runnable JAR hat geht meist was an den pfaden kaputte das man dann plötzlich nicht mehr relativ zum JAR sondern relativ zum jdk/jre ist ...

die fehlende transparanz und unix ist ein problem von java und wird auch in der doc / im tut erwähnt ...

ansonsten : vielleicht unterschiedliche jdk/jre bei ausführung von CMD/IDE und doppel-klick ?
 
Das Icon wird auf jeden Fall als Stream geladen.
Das mit der Java Version könnte theoretisch sein, ich habe nämlich JRE 6 und 7 installiert.
Das kann ich allerdings erst heute Abend prüfen.
Ob es an dem autoresize liegt, werde ich dann auch nochmal prüfen.

Danke schonmal
 
Also ich habe dir Jar jetzt explizit mit der javaw.exe der JRE7 und JRE6 ausgeführt.
-> Keine Veränderung.

Anschließend habe ich einfach mal ein bereits auf die richtige Größe skaliertes Image genommen und Autoresize ausgeschaltet.
-> Keine Veränderung.

Dann habe ich ein anderes transparentes PNG aus dem Netz genommen und siehe da, es funktioniert. :autsch:

Das heisst es liegt wohl am Bild.

Hat jmd. eine Idee was ich tun kann, damit die Bilder richtig dargestellt werden?
Photoshop ist vorhanden.
 

Zurück
Oben