Oi, pessoal. Estou criando um programinha para capturar a posição do mouse FORA de um JFrame. Porém, to apanhando e não consegui resolver de jeito nenhum. Vejamos:
import javax.swing.JFrame;
import java.awt.AWTException;
import java.awt.FlowLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
public class UserScreen extends JFrame{
//constructor
public UserScreen() throws AWTException{
super("Mouse Position");
setLayout(new FlowLayout());
//create and register listener to mouse movement events
MouseHandler handler = new MouseHandler();
this.addMouseMotionListener(handler);
this.addMouseListener( handler );
}
//internal class
private class MouseHandler implements MouseMotionListener, MouseListener
{
public void mouseDragged(MouseEvent event) {}
public void mouseMoved(MouseEvent event) {
System.out.println("Mouse movimentou. Pos x:"+event.getX()+" Pos y: "+event.getY());
}
public void mouseClicked(MouseEvent arg0) {}
public void mousePressed(MouseEvent arg0) {}
public void mouseReleased(MouseEvent arg0) {}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent event) {}
}//end internal class
}//end class UserScreen
Enfim, lá em cima, no trecho
this.addMouseMotionListener(handler);
this.addMouseListener( handler );
eu adicionei um ouvinte para o meu JFrame, certo? Isto implica dizer que o método mouseMoved só vai funcionar quando o cursor do mouse estiver dentro do JFrame. E não é isso que eu quero. Eu quero que o método mouseMoved funcione após qualquer movimento do mouse, independente de ser dentro do JFrame ou não. Eu não sei se eu devo adicionar um ouvinte de movimentação do mouse pra outro componente do programa. e se devo adicionar, não sei qual.
Será que é fácil fazer isso?
Tudo bem que tem esse tópico fala de eventos de mouse, peço até desculpas, mas achei útil pôr aqui pq pode ser útil pra quem quer fazer isso com swing.
Um abraço. Grato pela atenção