[TrayIcon] Transparent unter Linux

Zeussi

Mitglied
Hallo Leute,

ich bin gerade dabei meine erste Anwendung mittels Swing und einen TrayIcon zu erstellen.
Dabei arbeite ich unter Linux und der Oberfläche KDE.

Ich verwende PNG Grafiken mit transparentem Hintergrund. Über TrayIcon.getSize() ist auch die Größe ermittelbar und somit hat die Grafik auch die richtige Größe und wird nicht so häßlich skaliert von Java - in meinem Fall 24 Pixel.

Das Problem ist nur, dass diese unter Linux nicht transparent angezeigt werden. Unter Windows funktioniert es einwandfrei, auch wenn man sich die Grafiken so anschaut sind sie im Hintergrund transparent.

Im Internet hab ich folgenden Bug gefunden, was ich aber da rausgelesen hatte war, dass dies wohl nur bei animierten Grafiken der Fall ist?
Bug ID: 6453521 TrayIcon should support transparency

Ansonsten muss es doch eine Möglichkeit geben, transparente TrayIcons unter Linux KDE zu erstellen... kann ja nicht sein dass das NIEMAND bisher geschafft hat :bahnhof:

Danke schon mal,
Zeussi
 
F

freak_007

Gast
Es funktioniert höchstens unter SWT. SWT ist eine eigene Gui Library die native Komponente verwenden. Es reduziert die Platformunabhängikeit, aber es funktioniert.
PS. Unter Gnome funzt es auch nicht.
Gruss,
Freak
 

Zeussi

Mitglied
Hallo freak_007,

danke Dir für die schnelle Antwort :)

Ich hab gerade ein bisschen in dem SWT Snippet und der Doku zu TrayIcon rumgeschaut. Scheint eine Kopie der Java Hauseigenen Klassen zu sein, nur mit anderen Namen und Methoden (TrayIcon = TrayItem, usw.) - sprich, ich darf dann alles von vorne aufsetzen auf der Basis von SWT?

Aber an sich schaut es schon mal gut aus, unter KDE hatte ich auch noch das Problem dass er das native UI Interface nicht annehmen wollte... vielleicht lässt sich das mittels SWT ja auch lösen :)

Ich schaus mir an und werde berichten ;)
 
F

freak_007

Gast
Nein, du musst nicht alles neu schreiben, die Items im Tray können ja auf Swing Elemente zugreifen zugreifen.
 

Zeussi

Mitglied
so, hab mich da jetzt ne Weile daran probiert. Entweder scheitert es an der (für mich) mich zu dürftigen Dokumentation oder ich bin einfach zu blöd dazu :D

Problem: Ich schaffe es nicht mal, ein Image darzustellen. Es wird das TrayItem geladen, aber ohne Bild.

Folgender Testcode:
Java:
Display displaySWT = new Display();
final Tray traySWT = displaySWT.getSystemTray();
final TrayItem itemSWT = new TrayItem (traySWT, SWT.NONE);	    
		    
Image imageSWT = new Image(displaySWT, "/home/user/workspace/WorkTimerSWT/bin/main/resources/24/clock-1.png");
		    
itemSWT.setImage(imageSWT);

alternativ habe ich es mit folgendem Image probiert:

Java:
Image imageSWT = new Image(displaySWT, getClass().getResource("/main/resources/24/clock-1.png").getFile());

oder
Java:
Image imageSWT = new Image(Display.getDefault(), trayManager.class.getClassLoader().getResourceAsStream("/main/resources/24/clock-1.png"));

es wird aber leider immer nur ein leeres Viereck (aber schon mal transparent :D ) in der Statusleiste angezeigt... ???:L
 
F

freak_007

Gast
Versuch mal dass, weil ich glaube du verwendest ein bild 24x24. Verkleiner das Bild auf 16x16.
 
Zuletzt bearbeitet von einem Moderator:
F

freak_007

Gast
Vergiss den Blödsinn nochmal. Wenn ich mich nicht irre hast du den Event Dispatcher im main vergessen.
Java:
while (/* solange Programm im Tray noch lebt */) {
	if (!display.readAndDispatch())
		display.sleep();
}
display.dispose();
Der sorgt dafür, dass SWT nicht eingefroren wird. Sonst hätte ich keine andere Lösung.
 

Zeussi

Mitglied
Sorry für das späte Feedback, war (leider) im Urlaub ;)

Das Neuzeichnen war es was gefehlt hat @ freak_007. Jetz läuft es wunderbar mit dem Tray Icon. Musste zwar die Listener alle ersetzen (anstatt MouseListener etc. gibt es SelectionListener), aber solange es funktioniert...

Ein anderes merkwürdiges Problem ist aufgetreten: Ab den Listener greife ich auf meine alten Objekte zu, welche Swing Fenster sind. Die JTextField Felder werden angezeigt, aber die JLabel Felder werden nicht angezeigt, ab und zu wird mal eine Textzeile angezeigt... aber eher selten.

Hab mich damit jetzt eine Weile gespielt... aber leider noch nicht rausgefunden woran das liegen könnte - ab dem Listener ist alles unverändert.. mhm
 
F

freak_007

Gast
Es könnte sein das du ein wenig schlampig Multi-threaded programmiert. Dort ist beschrieben wie man sauber Swing-Multithreaded programmiert.
 

Zeussi

Mitglied
Du hattest Recht freak_007, Du Genie, es lag daran dass ich die Fenster nicht in extra Threads hab laufen lassen.

Mein tolles Java Buch (Java von Kopf bis Fuß) hat mir das leider aber auch nicht verraten und es ist meine erste Java Anwendung überhaupt, ich glaube das kann man als gute Ausrede durchgehen lassen :D

Auf jeden Fall danke ich Dir schon mal für die super Hilfe. Alleine wäre ich auf die ganzen Sachen nie gekommen.

DANKE :toll: :applaus:
 
F

freak_007

Gast
Ich hab auch dieses Buch für den Anfang Java verwendet, aber es ist super. Du solltest auch Imgaes disposen um Memory Leaks zu verhindern
Java:
imageSWT.dispose();
Sonst brauchst du außer Display nichts disposen.
Gruß,
Freak
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
J TrayIcon wir beim Ausführen der .jar nicht angezeigt Java Basics - Anfänger-Themen 7
G TrayIcon: Wie aktuelle Position des Icons erhalten? Java Basics - Anfänger-Themen 2
G TrayIcon für JSF-Applikation -> Tutorial gesucht Java Basics - Anfänger-Themen 4
H Info von Webserver prüfen und per TrayIcon visualisieren Java Basics - Anfänger-Themen 4
G Animiertes TrayIcon Java Basics - Anfänger-Themen 2
I HTML Code in Bild (transparent) konvertieren Java Basics - Anfänger-Themen 0
S Wieso wird mein JFrame transparent dargestellt? Java Basics - Anfänger-Themen 5
H JPanel Hintergrund transparent setzen? Java Basics - Anfänger-Themen 10
Ernesto95 BufferedImage Teilbereich wieder transparent setzen Java Basics - Anfänger-Themen 16
D JButton transparent bekommen? Java Basics - Anfänger-Themen 5
G Wie kriege ich ein jpg transparent? Java Basics - Anfänger-Themen 6
M Wo den Ordner javafx-sdk-21.0.2 unter Linux ablegen? Java Basics - Anfänger-Themen 5
E Audio Datei unter Bedingungen ausführen Java Basics - Anfänger-Themen 19
D Jar Datei startet unter Linux nicht Java Basics - Anfänger-Themen 3
U Beispiel Methode size() vom "Collection"-interface... Wie kann man sichtbar machen, was die Methode unter der Haube macht? Java Basics - Anfänger-Themen 8
nbergmann Umgebungsvariablen einstellen unter Windows 7 klappt nicht Java Basics - Anfänger-Themen 2
nbergmann Installation unter jdk.java.net: Keine ZIP-Datei zum entpacken Java Basics - Anfänger-Themen 2
thor_norsk Datentypen unter Java Java Basics - Anfänger-Themen 3
R Array mit Unter- und Obergrenze ganze Zahlen dazwischen erscheinen nicht Java Basics - Anfänger-Themen 1
U BestPractise für Deployment unter Windows gesucht Java Basics - Anfänger-Themen 12
W Random Zahl unter Berücksichtung eines Durchschnitts Java Basics - Anfänger-Themen 7
B Java Mail -> Mail senden, ist aber nich in IMAP unter "Gesendet" Java Basics - Anfänger-Themen 3
D Wert des Arrays unter Bedingungen ändern Java Basics - Anfänger-Themen 1
M Speichern unter. Java Basics - Anfänger-Themen 11
L Linux Befehle unter Windows in Eclipse ausführen Java Basics - Anfänger-Themen 3
J ImagaIO funktioniert nicht unter Ubuntu Java Basics - Anfänger-Themen 23
E Knoten eines Baumes unter Bedinung zählen Java Basics - Anfänger-Themen 2
J Punkt auf,über,unter oder zwischen 2 Geraden Java Basics - Anfänger-Themen 14
B Klassen Alle Unter-Objekte durchlaufen in der Hauptklasse Java Basics - Anfänger-Themen 10
F Console command unter Linux Java Basics - Anfänger-Themen 7
C GUI Programmierung unter Windows mit Java womit? Java Basics - Anfänger-Themen 11
D Einen Wert unter einen ActionListener weitergeben Java Basics - Anfänger-Themen 1
S Compiler-Fehler javac hat Probleme mit Paketen unter OSX Java Basics - Anfänger-Themen 2
N Eclipse - eigene Icons unter ClassPath Resource Java Basics - Anfänger-Themen 0
G Erste Schritte Unter Mac "Path" anpassen .bash_profile? Java Basics - Anfänger-Themen 5
C Java stellt unter Windows keine Umlaute dar Java Basics - Anfänger-Themen 9
J Ordner unter Windows Verstecken Java Basics - Anfänger-Themen 2
F Erste Schritte Unter Windows programmieren und dann auf Linux laufen lassen Java Basics - Anfänger-Themen 4
Z Gleiches Verzeichnis für class und java unter Windows Muss? Java Basics - Anfänger-Themen 11
Bluedaishi Dateien Lassen sich unter windows nicht löschen Java Basics - Anfänger-Themen 8
W Datei wird aus resources unter Windows nicht kopiert Java Basics - Anfänger-Themen 1
S Datei einlesen - Dateipfad unter Linux anpassen Java Basics - Anfänger-Themen 12
A Java IDE unter 400mb?? Java Basics - Anfänger-Themen 3
M JSF Projekt erstellen unter Eclipse Java Basics - Anfänger-Themen 7
A .jar unter Linux nutzen Java Basics - Anfänger-Themen 2
G Java unter Mac = schlecht | Windows = gut? Java Basics - Anfänger-Themen 14
M datei startet unter windows 7 nicht Java Basics - Anfänger-Themen 12
N .jar läuft nicht unter Windows 7 Starter Java Basics - Anfänger-Themen 4
F Exportieren als ausführbare Jar-Datei unter Ubuntu nicht möglich Java Basics - Anfänger-Themen 17
M in jTable schreiben unter Bedingung Java Basics - Anfänger-Themen 3
FrozeTee .java Dateien unter Windows 7 werden nicht angezeigt Java Basics - Anfänger-Themen 7
J Erste Schritte Speichern / Speichern unter / title Frame Java Basics - Anfänger-Themen 5
S Erste Schritte import für andere Klassenfiles verfügbar machen? (Java unter Eclipse) Java Basics - Anfänger-Themen 8
A Probleme mit JAR-Datei-Erstellung unter Eclipse Java Basics - Anfänger-Themen 23
S Umgebungsvariablen unter Windows XP Java Basics - Anfänger-Themen 6
S Classpath Libraries werden unter Linux nicht erkannt Java Basics - Anfänger-Themen 5
H speichern unter (JFileChooser) Java Basics - Anfänger-Themen 2
B Javadoc-Befehl unter Ubuntu Java Basics - Anfänger-Themen 2
Z Umgebungsvariable PATH-Umgebungsvariable unter Windows 7 Java Basics - Anfänger-Themen 27
V mehrfachvererbung unter interfaces Java Basics - Anfänger-Themen 10
L Farbe unter Cursor bestimmen Java Basics - Anfänger-Themen 5
D Pfadangabe unter windows Java Basics - Anfänger-Themen 7
K kan 64Bit Version unter Win7Pro64 nicht installieren Java Basics - Anfänger-Themen 12
J File unter Linux Java Basics - Anfänger-Themen 8
J JDK installieren JRE unter Windows7 64bit Java Basics - Anfänger-Themen 8
C Mehrere Zeilen unter ~.showMessageDialog Java Basics - Anfänger-Themen 12
F getProperty() unter 64bit Java Basics - Anfänger-Themen 2
J Erstellte .jar unter 32 bit funktioniert nicht bei 64 bit Java Basics - Anfänger-Themen 4
G jar unter MeeGo installieren Java Basics - Anfänger-Themen 3
VfL_Freak Applikation läuft nicht unter Windows7 "platform not supported" Java Basics - Anfänger-Themen 15
R Programm gibt keine Reaktion unter Eclipse auf Mac Java Basics - Anfänger-Themen 13
I Java Programm unter Linux ausführen Java Basics - Anfänger-Themen 2
J Java Tool unter Windows ausführen Java Basics - Anfänger-Themen 8
H archive vergleichbarer Paramter unter Tag Object mit Parameter codetype="application/java-vm" Java Basics - Anfänger-Themen 3
C Windows Java unter Unix Java Basics - Anfänger-Themen 2
M Importieren von "IO.class" unter Eclipse Java Basics - Anfänger-Themen 4
G Problem mit einem Programm unter Win7 Java Basics - Anfänger-Themen 2
M Problem mit relativen Pfad unter Linux Java Basics - Anfänger-Themen 5
J Classpath bestimmen, unter Windows 7 Java Basics - Anfänger-Themen 2
S Random zahlen mit unter und obergrenze Java Basics - Anfänger-Themen 3
L Lucene Classpath unter linux setzen Java Basics - Anfänger-Themen 8
M Icons etc. werden unter Linux nicht gefunden Java Basics - Anfänger-Themen 6
C setResizable(false) unter NetBeans Java Basics - Anfänger-Themen 3
M Java einrichten unter Windows 7 Java Basics - Anfänger-Themen 12
C Wav-Sound nur unter Window Java Basics - Anfänger-Themen 5
B Classpath setzen - UNTER MAC OS X Java Basics - Anfänger-Themen 2
A 2 Monitore unter Java Java Basics - Anfänger-Themen 2
Y BufferdImage schreiben, unter Vista gehts, unter Ubuntu nicht... Java Basics - Anfänger-Themen 9
U Speichern unter button programmieren Java Basics - Anfänger-Themen 12
T Einfache Textausgabe .java unter OS X Java Basics - Anfänger-Themen 13
K Terminal Befehl mit Java unter Mac ausführen Java Basics - Anfänger-Themen 18
R .jar läuft nicht unter Linux Java Basics - Anfänger-Themen 11
D Class not found fehler beim ausführen unter konsole : / Java Basics - Anfänger-Themen 2
B Java Datei unter Solaris kompilieren Java Basics - Anfänger-Themen 2
T Drucken von Listen bestehend aus Grafik und Text (unter swing) Java Basics - Anfänger-Themen 7
C Windows Look and Feel unter Linux Java Basics - Anfänger-Themen 10
K Export Eclipse-Project unter MAC OS X Java Basics - Anfänger-Themen 2
F jar Datei unter Vista 64 bit Java Basics - Anfänger-Themen 2
schroedi JAVA_HOME setzen unter Debian Java Basics - Anfänger-Themen 8
J Eine JAR unter Linux starten ... Java Basics - Anfänger-Themen 15

Ähnliche Java Themen

Neue Themen


Oben