Aplicação com ícone no tray não abre

0 respostas
C

Galera, fiz uma pequena aplicação em Swing que quando minimizado cria um ícone no "Tray".
O ícone possui 2 opções: "Abrir" e "Fechar", essas opções funcionam normalmente, porém quando clico com o botão esquerdo 1 ou 2 vezes no ícone a aplicação não abre.
Li em algum lugar que esse listener do botão esquerdo do mouse deveria abrir a app por default.

Segue código da minha classe que controla o Tray.

package br.com.hb.consultaderamal.util;

import br.com.hb.consultaderamal.view.ConsultaDeRamalView;
import java.awt.AWTException;
import java.awt.Image;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class AreaNotificacao {

    static TrayIcon trayIcon = null;
    //Referencia à instancia ?crv? da classe ConsultaDeRamalView, para acesso da bandeja.
    static ConsultaDeRamalView pai = ConsultaDeRamalView.crv;

    public AreaNotificacao() {
        super();
        criaAreaNotificacao();
    }

    static void criaAreaNotificacao() {

        //Verifica se é possível trabalhar com ?TrayIcon?
        if (!SystemTray.isSupported()) {
            System.out.println("Sem suporte a SystemTray!");
            return;
        }

        final PopupMenu pop = new PopupMenu();
        final SystemTray tray = SystemTray.getSystemTray();
        
        // Criação do TrayIcon, informando uma imagem e um título
        trayIcon = new TrayIcon(createImage("/br/com/hb/consultaderamal/images/PhoneIconTray.png", "TrayIcon"));
        trayIcon.setToolTip("HB");
        
        //Criação dos itens do Menu Popup
        MenuItem item_1 = new MenuItem("Abrir");
        MenuItem item_2 = new MenuItem("Fechar");

        //Adicionando os itens ao Menu Popup
        pop.add(item_1);
        pop.addSeparator();
        pop.add(item_2);
        
        trayIcon.setPopupMenu(pop);

        // Adicionado ícone na área de notificação
        try {
            tray.add(trayIcon);
        } catch (AWTException e) {
            System.out.println("Erro ao adicionar ícone na área de notificação.");
            return;
        }

        //Ação do botão ?item_1″
        item_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                pai.setVisible(true); // Deixa a janela visível novamente
                pai.setExtendedState(JFrame.NORMAL); // Deixa a janela sobre as outras, caso ela apareça minimizada

                try {
                    tray.remove(trayIcon); // Remove (ou esconde) o ícone da Área de Notificação
                    trayIcon = null;
                    pai.an = null; //Limpando a referência ao Systemtray
                } catch (Throwable e1) {
                    e1.printStackTrace();
                }
            }
        });

        //Ação do botão ?item_2″
        item_2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
    }

    protected static Image createImage(String path, String description) {
        URL imageURL = AreaNotificacao.class.getResource(path);

        if (imageURL == null) {
            System.err.println("Caminho não encontrado: " + path);
            return null;
        } else {
            return (new ImageIcon(imageURL, description)).getImage();
        }
    }
}
Criado 26 de julho de 2013
Respostas 0
Participantes 1