2013-04-19 10 views
5

Ho un'applicazione Java che si riduce nella barra delle applicazioni quando si preme la croce rossa.Come far sparire il messaggio TrayIcon di Java?

Ogni volta che ciò accade, viene visualizzato un messaggio per informare l'utente che l'applicazione è ancora in esecuzione nella barra delle applicazioni.

Ecco il codice per questo:

... 

    @Override 
    public void windowClosing(WindowEvent e) { 
     try { 
      tray.add(trayIcon); 
      trayIcon.displayMessage("", "The application has been reduced 
       in the system tray, to stop it, press the \"Quit\" button", 
       TrayIcon.MessageType.WARNING); 
      setVisible(false); 
     } catch (AWTException ex) { 
      System.out.println("unable to add to tray"); 
     } 
    } 
... 

Per il momento, il messaggio scompare se l'utente fa clic su di esso.

Vorrei impostare un contatore in modo che il messaggio svanisca dopo un paio di secondi anche se non è stato fatto nulla.

Qualcuno sa un bel modo per farlo perché non riesco a trovare alcun metodo esistente per quello.

EDIT

devo correggere la mia domanda, infatti, dopo aver testato un po 'più a lungo, si affievolisce automaticamente dopo, diciamo, 7-8 secondi, ma io lo trovo un po' troppo lungo. Inoltre, scompare solo se l'utente sta eseguendo un'azione (spostando il mouse o digitando sulla tastiera)

Quindi la nuova domanda sarebbe: c'è un modo per ridurre il tempo di dissolvenza e modificare il comportamento del messaggio configurando l'applicazione Java o è inerente a Windows?

risposta

3

Quindi la nuova domanda sarebbe: C'è un modo per ridurre il fade out tempo configurando l'applicazione Java o è intrinseco a Windows?

  • MSDN says in part How long to notify - In Windows Vista e versioni successive, le notifiche vengono visualizzate per una durata fissa di 9 secondi.

  • eventuali modifiche è possibile mantenere solo su formato Windows, ma sembra che sia valido/applicata per tutti messagess


  • il possibile per creare proprio Opalino JDialog (trasparenza potrebbe essere troppo) posto programmaticamente verso il basso a sinistra, lo sbiadimento verrà richiamato da Swing Timer
+1

Forse qualcosa di simile a questo ['AlphaTest'] (http: // stacko verflow.com/a/2234020/230513)? – trashgod

+0

Potrei creare un JDialog personale ma la posizione dovrebbe variare a seconda di dove l'utente ha impostato la sua barra delle applicazioni, sarebbe molto lavoro solo per cambiare un piccolo comportamento. Penso che rimarrò con il messaggio standard TrayIcon. Ma segnerò i tuoi vasi come risposta, perché penso che sia la risposta corretta. – Padrus

+1

@Padrus questa possibilità è molto semplice da calcolare, poiché GraphicsEnvironment restituisce anche il rapporto tra i pixel e l'altezza della barra delle applicazioni, oppure può essere calcolato da JFrame.getExtendedSize, – mKorbel

Problemi correlati