Hi,
ich habe für meine Zwecke ein Workaround geschrieben, da man für die TrayIcons nur die AWT-Version ohne Icons nutzen kann. Und da das simple Workaround (1. oder 2. Ergebnis in der Google-Suche) mit dem JPopupMenu auch nicht funktioniert (verschwindet nicht bei verlorenem Fokus, bzw. erhält werder focusGained()- noch focusLost()-Events) habe ich das ganze selber per JDialog gelöst.
Funktioniert soweit für meine Zwecke einwand frei. Es lassen sich nach kurzer Google-Suche auch andere Workarounds mit JDialogs finden aber einige haben scheinbar das Problem, dass sich die Programme nur per System.exit(int) schließen lassen, da sie die dialoge nicht disposen.
In meiner Lösung sollte dies kein Problem darstellen, da der JDialog jedesmal, wenn er verschwindet disposed wird.
Sie ist allerdings auch nicht Vollständig, was die Funktionalität betrifft, da ich sie nur soweit ausgebaut habe, wie ich sie momentan für meine Zwecke brauche. Man kann aber bequem ein PopupMenu über Actions oder JMenuItems aufbauen und addSeperator() ist auch vorhanden. Wer mehr Funktionalität braucht kann diese gerne ergänzen
Alles in allem denke ich eine nutzbare Vorlage.
Die 2 Klassen
JXTrayIcon und
JXPopupMenu findet ihr im Anhang gezippt.
und hier ein kleines Beispiel, wie man es nutzen kann:
Edit:
Gruß d4rkY89
ich habe für meine Zwecke ein Workaround geschrieben, da man für die TrayIcons nur die AWT-Version ohne Icons nutzen kann. Und da das simple Workaround (1. oder 2. Ergebnis in der Google-Suche) mit dem JPopupMenu auch nicht funktioniert (verschwindet nicht bei verlorenem Fokus, bzw. erhält werder focusGained()- noch focusLost()-Events) habe ich das ganze selber per JDialog gelöst.
Funktioniert soweit für meine Zwecke einwand frei. Es lassen sich nach kurzer Google-Suche auch andere Workarounds mit JDialogs finden aber einige haben scheinbar das Problem, dass sich die Programme nur per System.exit(int) schließen lassen, da sie die dialoge nicht disposen.
In meiner Lösung sollte dies kein Problem darstellen, da der JDialog jedesmal, wenn er verschwindet disposed wird.
Sie ist allerdings auch nicht Vollständig, was die Funktionalität betrifft, da ich sie nur soweit ausgebaut habe, wie ich sie momentan für meine Zwecke brauche. Man kann aber bequem ein PopupMenu über Actions oder JMenuItems aufbauen und addSeperator() ist auch vorhanden. Wer mehr Funktionalität braucht kann diese gerne ergänzen

Alles in allem denke ich eine nutzbare Vorlage.
Die 2 Klassen
JXTrayIcon und
JXPopupMenu findet ihr im Anhang gezippt.
und hier ein kleines Beispiel, wie man es nutzen kann:
Java:
private boolean initTray() {
if (!SystemTray.isSupported())
return false;
Dimension trayIconSize = SystemTray.getSystemTray().getTrayIconSize();
Image img = Toolkit.getDefaultToolkit().getImage("einbild.png");
// das Bild skalieren
//{...}
if (img == null)
return false;
JXPopupMenu trayPopup = new JXPopupMenu();
trayPopup.add(new JMenuItem("TestEntry 1"));
trayPopup.addSeparator();
trayPopup.add(new JMenuItem("TestEntry 2"));
trayIcon = new JXTrayIcon(img, "TrayIcon Tooltip", trayPopup);
try {
SystemTray.getSystemTray().add(trayIcon);
return true;
} catch (AWTException e) {
return false;
}
}
Edit:
Gruß d4rkY89
