System Tray

6 respostas
emsoc

Salve amigos!

Estou desenvolvendo um sistema de notificação no qual o System Tray vai servir de notificador e para isso, a cada evento recebido, o mesmo deverá piscar. Já procurei uma forma de fazer o meu ícone do System Tray piscar e não encontro nada a respeito. Será que alguém sabe ao certo o evento responsável para fazer isso?

Desde já agradeço a ajuda,

6 Respostas

T

Em vez de “piscar” você normalmente altera o ícone por um segundo, e retorna ao ícone original.

emsoc

Como faço? Devo utilizar o quartz?

T

Acho que não precisa tanta munição assim. É que não sei se é suficiente dar um “Thread.sleep (1000)” ou se você precisa realmente criar uma thread.

emsoc
package br.com.netmaker;

import java.awt.*;
import java.awt.event.*;

public class SystemTrayTest
{
    
    public SystemTrayTest() throws AWTException
    {
        
        final TrayIcon trayIcon;

        if (SystemTray.isSupported()) {

            SystemTray tray = SystemTray.getSystemTray();
            Image image = Toolkit.getDefaultToolkit().getImage("tray.gif");

            MouseListener mouseListener = new MouseListener() {
                
                public void mouseClicked(MouseEvent e) {
                    System.out.println("Tray Icon - Mouse clicado!");                 
                }
                public void mouseEntered(MouseEvent e) {
                    System.out.println("Tray Icon - Mouse entered!");                 
                }
                public void mouseExited(MouseEvent e) {
                    System.out.println("Tray Icon - Mouse exited!");                 
                }
                public void mousePressed(MouseEvent e) {
                    System.out.println("Tray Icon - Mouse pressionado!");                 
                }
                public void mouseReleased(MouseEvent e) {
                    System.out.println("Tray Icon - Mouse released!");                 
                }

            };

            ActionListener exitListener = new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    System.out.println("Saindo...");
                    System.exit(0);
                }
            };
            
            PopupMenu popup = new PopupMenu();
            MenuItem defaultItem = new MenuItem("Sair");
            defaultItem.addActionListener(exitListener);
            popup.add(defaultItem);

            trayIcon = new TrayIcon(image, "IntraNetMaker", popup);

            ActionListener actionListener = new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    trayIcon.displayMessage("Action Event", 
                        "An Action Event Has Been Peformed!",
                        TrayIcon.MessageType.INFO);
                }
            };
            
            trayIcon.setImageAutoSize(true);
            trayIcon.addActionListener(actionListener);
            trayIcon.addMouseListener(mouseListener);

            //    Depending on which Mustang build you have, you may need to uncomment
            //    out the following code to check for an AWTException when you add 
            //    an image to the system tray.

            //    try {
                      tray.add(trayIcon);
            //    } catch (AWTException e) {
            //        System.err.println("TrayIcon could not be added.");
            //    }

        } else {
            System.err.println("System tray is currently not supported.");
        }
    }
    
    /**
     * @param args the command line arguments
     * @throws AWTException 
     */
    public static void main(String[] args) throws AWTException
    {
        SystemTrayTest main = new SystemTrayTest();
    }
    
}

Thingol, eis o código onde posso inserir esta Thread? Pois tentei fazer aqui e não consegui fazê-lo piscar por 1 segundo.

T

Você não usou “setImage” com uma imagem diferente, depois do Thread.sleep?

Mikhas

Cria uma pequena Thread que receba o tray como argumento, mude o icone, da um sleep, retorna o icone original e mata a thread.

Criado 15 de setembro de 2008
Ultima resposta 16 de set. de 2008
Respostas 6
Participantes 3