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?
Forse qualcosa di simile a questo ['AlphaTest'] (http: // stacko verflow.com/a/2234020/230513)? – trashgod
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
@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