método mouseExited da classe MouseListener fecha a frame com o cursor ainda do lado de dentro

Bom dia a todos. Gostaria da ajuda de alguém. Tenho uma frame que implementa a classe MouseListener e MouseMotionListener para ter a função de abrir a frame quando aproximasse o mouse e fechar a frame quando o cursor do mouse sair da área da frame. Quero fazer uma lista de telefone com um acesso rápido. A princípio funcionou tudo blz quando a frame vazia, mas agora que acrescentei alguns componentes, quando o cursor do mouse passa sobre algum deles (JTextField, JButton), ela fecha a frame como se tivesse tirado o cursor da área da frame. O código é este:

package gui;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JanelaInicial extends JFrame implements MouseListener,  
MouseMotionListener {

    {
        //Set Look & Feel
        try {
            javax.swing.UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

    private JTextField tfPesq;
    private JButton btPesq;

    public JanelaInicial(){
        super("Pesquisar");
        this.setSize(200, 627);
        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 

        int x = dim.width - (this.getWidth()) ;  
        int y = (dim.height - this.getHeight()) / 2;  
        setLocation(x, y);
        setLayout(null);
        setUndecorated(true);

        {
            tfPesq = new JTextField("Pesquisar");
            tfPesq.setBounds(3,5,100,23);
            add(tfPesq);
        }
        {
            btPesq = new JButton("Pesq");
            btPesq.setBounds(100,5,100,23);
            add(btPesq);
        }

        this.addMouseListener(this);
        this.addMouseMotionListener(this);

        Container c = getContentPane();
        c.setLayout(new BorderLayout());
        JLabel lbImagem = new JLabel(new ImageIcon(getClass().getClassLoader()
                .getResource("img/water.jpg")));

        c.add(lbImagem, BorderLayout.CENTER);

    }

    public void mouseClicked( MouseEvent e ){
    }
    public void mousePressed( MouseEvent e ){
    }
    public void mouseReleased( MouseEvent e ){
    }
    public void mouseEntered( MouseEvent e ){
        mostraJanela(true);
    }
    public void mouseExited( MouseEvent e ){
        mostraJanela(false);
    }

    // Tratadores de MouseMotionListener
    public void mouseDragged( MouseEvent e ){
    }
    public void mouseMoved( MouseEvent e ){
    }
    public void mostraJanela(Boolean valor){
        this.setVisible(valor);
    }
}

Desde já agradeço!!!