Es geht darum folgendes Problem zu lösen:
mein Programm soll als GUI ausschließlich ein TrayIcon besitzen und es soll unter Linux/Gnome autogestartet werden. Da aber zu dem Zeitpunkt des Autostartens blöderweise das SystemTray noch nicht existiert, schmeißt SystemTray.add(TrayIcon) eine AWTException. Ich habe es nun so gelöst, dass das Programm das add solange wiederholt, bis es geklappt hat oder 50 Versuche verstrichen sind.
Hier der entsprechende Codeschnipsel:
Es braucht nun ca. 3 Versuche und alles funzt. Trotzdem möchte ich die Frage in die Runde werfen, ob jemand ne bessere Idee hat und wie sowas noch aussehen könnte.
mein Programm soll als GUI ausschließlich ein TrayIcon besitzen und es soll unter Linux/Gnome autogestartet werden. Da aber zu dem Zeitpunkt des Autostartens blöderweise das SystemTray noch nicht existiert, schmeißt SystemTray.add(TrayIcon) eine AWTException. Ich habe es nun so gelöst, dass das Programm das add solange wiederholt, bis es geklappt hat oder 50 Versuche verstrichen sind.
Hier der entsprechende Codeschnipsel:
Code:
boolean tray_not_shown = true;
int fail_count = 0;
while(tray_not_shown){
try{
tray.add(trayicon);
tray_not_shown = false;
}
catch(AWTException e){
fail_count++;
out(e.getMessage() + "(" + fail_count + ". try)");
}
try{
Thread.sleep(1000);
}
catch(Exception e){}
if(fail_count > 49){
System.exit(0);
}
}
Es braucht nun ca. 3 Versuche und alles funzt. Trotzdem möchte ich die Frage in die Runde werfen, ob jemand ne bessere Idee hat und wie sowas noch aussehen könnte.