Usando JPopupMenu no TrayIcon

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?