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.
importjava.awt.AWTException;importjava.awt.MenuItem;importjava.awt.PopupMenu;importjava.awt.SystemTray;importjava.awt.TrayIcon;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjavax.swing.ImageIcon;importjavax.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 */publicclassExemploTrayMenuextendsJFrame{PopupMenupopUp;ImageIconicone;TrayIcontrayIcon;publicExemploTrayMenu(){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 telathis.criaMenu();icone=newImageIcon(getClass().getResource("icone.png"));//coloque um icone na pasta onde esta essa classe!trayIcon=newTrayIcon(icone.getImage(),"Visualizador de logs Daiken",popUp);SystemTraytray=SystemTray.getSystemTray();try{tray.add(trayIcon);}catch(AWTExceptionaWTException){}this.setVisible(true);}privatevoidcriaMenu(){popUp=newPopupMenu();MenuItemitem1=newMenuItem("Abrir");item1.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){getInstance().setVisible(true);}});MenuItemitem2=newMenuItem("Sair");item2.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){//miSairActionPerformed();System.exit(0);}});popUp.add(item1);popUp.addSeparator();// adiciona uma linha no popupMenupopUp.add(item2);}publicJFramegetInstance(){returnthis;}publicstaticvoidmain(Stringargs[]){newExemploTrayMenu();}}