Boa tarde pessoal!
Tenho um TrayIcon na minha aplicação com um MouseListener que abre um JPopupMenu. Eu queria reproduzir o comportamento do PopupMenu (awt) do TrayIcon. Quando clico nos meus JMenuItem o JPopMenu funciona perfeitamente, mas quando clico fora do meu JPopupMenu ele não fecha.
Ta ai o código:
[code]public TrayIcon getTray() {
// Check the SystemTray support
if (!SystemTray.isSupported()) {
MensagemSimplesDeErro.setMensagem(“SystemTray não é suportado”);
return null;
}
final JPopupMenu popup = new JPopupMenu();
final TrayIcon trayIcon;
// Create a popup menu components
JMenuItem abrirItem = new JMenuItem("Abrir");
abrirItem.setIcon(new ImageIcon(CarregaImagem
.getImagem("/imagens/green-ball.png")));
JMenuItem fecharItem = new JMenuItem("Fechar");
fecharItem.setIcon(new ImageIcon(CarregaImagem
.getImagem("/imagens/red-ball.png")));
// Add components to popup menu
popup.add(abrirItem);
popup.addSeparator();
popup.add(fecharItem);
trayIcon = new TrayIcon(
CarregaImagem.getImagem("/imagens/IconeSASCupdate.png"),
"Gestor de Dados do SASC");
trayIcon.setImageAutoSize(true);
trayIcon.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (!e.isPopupTrigger() && e.getButton() == MouseEvent.BUTTON3) {
popup.setVisible(false);
popup.setLocation(e.getX() + 5, e.getY() - 65);
popup.setInvoker(popup);
popup.setVisible(true);
} else {
popup.setVisible(false);
}
}
});
ActionListener listenerAbrirJanela = new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
frame.setVisible(true);
frame.setExtendedState(JFrame.NORMAL);
}
};
abrirItem.addActionListener(listenerAbrirJanela);
trayIcon.addActionListener(listenerAbrirJanela);
fecharItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int retorno = JOptionPane.showConfirmDialog(null,
"Tem certeza que desejar sair?", "Confirmação",
JOptionPane.YES_NO_OPTION);
if (retorno == JOptionPane.YES_OPTION) {
System.exit(0);
}
}
});
return trayIcon;
}[/code]
Alguem saberia me ajudar?