2014-07-18 3 views
7

Je me demandais si Java ou JFrame pouvait alerter l'utilisateur quand quelque chose se passait dans le programme. Par exemple, lorsque vous recevez un nouveau message dans Skype, l'arrière-plan des icônes Skype passe au jaune. "You have received a new message!"Comment créer une alerte JFrame dans la barre des tâches?

Puis-je le faire en Java?

+0

Que voulez-vous dire par quelque chose qui s'est passé dans le programme. – Braj

+0

Lorsqu'une certaine méthode a fini de fonctionner ou lorsqu'une instruction IF renvoie la valeur true. –

+1

duplication possible de [Comment créer une notification dans swing] (http://stackoverflow.com/questions/3240415/how-to-create-a-notification-in-swing) – Frakcool

Répondre

5

Au moins, vous pouvez changer l'icône du JFrame en appelant la méthode JFrame#setIconImage() qui ressemble à une notification et qui change aussi le titre si nécessaire.

Créez une icône que vous souhaitez afficher lorsqu'il y a une notification et définissez l'icône du code où vous le souhaitez.


Pour créer un effet lueur (clignotement), vous pouvez utiliser deux images et swap à un intervalle si la fenêtre sous forme réduite au minimum en utilisant Swing Timer et arrêter le chronomètre lorsque la fenêtre est à nouveau deiconified.

En savoir plus How to Use Swing Timers

exemple de code:

private boolean swap; 
private Timer timer; 

.... 

final Image onImage = new ImageIcon(ImageIO.read(new File("resources/1.png"))).getImage(); 
final Image offImage = new ImageIcon(ImageIO.read(new File("resources/2.png"))).getImage(); 

// interval of 500 milli-seconds 
timer = new Timer(500, new ActionListener() { 

    @Override 
    public void actionPerformed(ActionEvent arg0) { 
     if (swap) { 
      setIconImage(onImage); 
     } else { 
      setIconImage(offImage); 
     } 
     swap = !swap; 
    } 
}); 
timer.setRepeats(true); 

// check whether window is in ICONIFIED state or not 
if (getExtendedState() == JFrame.ICONIFIED) { 
    timer.start(); 
} 


addWindowListener(new WindowAdapter() { 

    public void windowDeiconified(WindowEvent e) { 
     // set the icon back to default when window is DEICONIFIED 
     timer.stop(); 
    } 
}); 
+0

Nevermind, je ne l'ai pas lu correctement. – user3758041

+1

aussi, il pourrait utiliser un minuteur afin de le rendre amm comment le dire "allumer et éteindre"? Je ne sais pas comment l'expliquer ... Je veux dire de le faire "lueur" – Frakcool

+1

@Frakcool oui belle façon que je l'ai édité dans le post aussi. – Braj

0

Lorsque vous appelez la toFront() ou la fonction requestFocus() la fenêtre se met à clignoter comme vous le souhaitez. Le seul problème est qu'il va gagner en focus, mais tant que vous n'en avez pas besoin, ce n'est pas un problème. (La fenêtre ne se mettra pas en face de sa demande)

Questions connexes