bom pessoal estou desenvolvendo um sistema de backup que tera a funcao de backup programado, ou seja o usuario para configurar um determinada hora para que o sistema realiza o backup dos arquivos desejados.
para isso estou utilizando tray icon, para deixar o sistema aberto, trabalhando em segundo plano e aguardando a hora de fazer o backup. bom, minha duvida é que estou utilizando jpopmenu para exibir as opções do trayicon e nao consigo encontrar um solução para fechar o popup quando o usuario clicar fora do popup…
tipo, ja tentei utilizar varios eventos mas só funcionam quando clico no proprio trayicon… alguem saberia como fazer tipo, para quando ao clicar com o mouse, se nao fou no popup ou no trayicon eu chamar um setvisible(false) ou algo parecido e esconder o popup?
Ola!
Criei uma aplicação simples e espero que te ajude!
Estou usando PopupMenu e nao JPopupMenu.
Não se esqueça de colocar um icone na pasta onde estiver esta classe, com o nome “icone” e a extensão PNG, ou altere o nome do icone no codigo.
import java.awt.AWTException;
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 javax.swing.ImageIcon;
import javax.swing.JFrame;
/**
* Esta classe cria um frame vazio e um trayicon, ao clicar com o botao
* direito do mouse no tryicon, voce pode abrir o frame ou fechar a aplicação.
* Ao clicar com o botao direito do mouse no trayicon, um menu é aberto e ao
* se clicar em qualquer lugar na tela este menu é fechado.
*
* Atenção: Coloce um icone na pasta onde se encontra esta classe, de
* preferencia com o nome "icone" e a extensão PNG, ou altere o nome do icone
* aqui no codigo.
* @author Carlaum
*/
public class ExemploTrayMenu extends JFrame
{
PopupMenu popUp;
ImageIcon icone;
TrayIcon trayIcon;
public ExemploTrayMenu()
{
this.setTitle("Exemplo de TrayIcon");
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setSize(640, 480);
this.setLocationRelativeTo(null); // Faz a janela ser criada no centro da tela
this.criaMenu();
icone = new ImageIcon(getClass().getResource("icone.png")); //coloque um icone na pasta onde esta essa classe!
trayIcon = new TrayIcon(icone.getImage(),
"Visualizador de logs Daiken",
popUp);
SystemTray tray = SystemTray.getSystemTray();
try
{
tray.add(trayIcon);
}
catch (AWTException aWTException)
{
}
this.setVisible(true);
}
private void criaMenu()
{
popUp = new PopupMenu();
MenuItem item1 = new MenuItem("Abrir");
item1.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
getInstance().setVisible(true);
}
});
MenuItem item2 = new MenuItem("Sair");
item2.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//miSairActionPerformed();
System.exit(0);
}
});
popUp.add(item1);
popUp.addSeparator();// adiciona uma linha no popupMenu
popUp.add(item2);
}
public JFrame getInstance()
{
return this;
}
public static void main(String args[])
{
new ExemploTrayMenu();
}
}