JPanel + MouseMotionListener

Galera seguinte, eu tenho uma imagem que eu coloco num painel e gostaria de monitorar esta imagem através do movimento do mouse, mas não tenho obtido resultado.

Eu tenho o seguinte código, será que alguém da uma maõzinha!?

Aqui é onde adiciono a imagem no painel

            painelImagens.add(imagem);

Aqui é onde eu adicione um ouvinte para o painel

    public void adicionaOuvintePainelImagem(MouseMotionListener ouvinte){
        painelImagens.addMouseMotionListener(ouvinte);
    }

E aqui é a ação do ouvinte.

    private MouseMotionListener acaoPainelImagem(){
        MouseMotionListener ouvinte = new MouseMotionListener() {

            public void mouseDragged(MouseEvent e) {
                throw new UnsupportedOperationException("Not supported yet.");
            }

            public void mouseMoved(MouseEvent e) {
               System.out.println(e.getX() +" "+ e.getY());
                
            }
        };
        return ouvinte;

    }

Mas isto simplesmente não funciona, alguém saberia me dizer oq estou fazendo de errado!?

^^

Nem MouseMoved funciona?

Tem certeza que voce esta chamando o método que adiciona o mousemotionlistener no JPanel?

E outra, para eventos, não é interessante throw new UnsupportedOperationException(“Not supported yet.”), voce poderia simplesmente deixa-lo vazio.

Pois quando o usuario clicar e arrastar no JPanel sera lançado exceções invés de simplesmente não fazer nada.

então eu deixei lá o do clique só para vcs verem que foi criado corretamente, por que foi gerado pelo proprio netbeans.

E sim, tenho certeza que foi criado corretamente, da mesma forma que eu faço com vários outros que eu já fiz, mas com o mousemotion eu não consegui fazer!

Mas cade onde voce invoca.

 public void adicionaOuvintePainelImagem(MouseMotionListener ouvinte){  
     painelImagens.addMouseMotionListener(ouvinte);  
 } 

Voce deve ter um

adicionaOuvintePainelImage(acaoPainelImagem());

Se não tiver essa linha, é o que falta.

Voce mostrou apenas a definição de como colocar e um método que cria, não juntando os dois.

ah tah… deve ter faltado isto no meu codigo q te passei

        guicontrol.adicionaOuvintePainelImagem(acaoPainelImagem());

guicontrol é a classe da interface.

^^

Mas este codigo jah estava no meu codigo e mesmo assim naum tah fazendo nada o moved.

Tah osso… passei a tarde pensando no q fazer… mas ateh agora nada

hunf =/

Use um debuger e insira um break point na linha que adiciona o listener ao JPanel, só pra ter certeza que está sendo invocado.

Aparentemente está correto.

Então aí que tá o problema, eu já fiz isto e o seguinte:

Ele inicia, mas quando eu seto o painel para aparecer com a imagem, ele não faz o mousemotion, por que eu passo o mouse em cima do painel e ele simplesmente não dispara o evento.

Complicado.

Por isto mesmo que fiz este tópico, para saber o que poderia ta acontecendo, por que o evento não dispara.

^^

Sem mais código fica impossivel saber.

Será que voce nao instancia mais de uma vez o JPanel e adiciona o listener no 1° e coloca o 2° na tela?

Então eu uso um painel para cada coisa que eu uso e este é especifico para imagens que eu iria abrir.

Mas vou fazer uma revisão no codigo para ver se não instancio duas vezes, por que pode ser realmente isto, pode estar apontando para o objeto errado.

^^