Swing em Java: Capturando coordenadas do Mouse

Veja neste artigo como um analisador de mouse ajudará a determinar as coordenadas da localização atual do mouse.

Na verdade a aplicação mouse analyzer pode ser útil na programação de jogos onde você quer saber sobre as atividades do mouse ou a atual posição do mouse.

Vamos falar sobre um programa que pode ser muito útil para os trabalhos que exigem bom conhecimento das coordenadas de tela e programação de jogos.

Com esse programa você pode:

Vamos começar a ver como fazemos isso acontecer. Primeiro nós incluiremos todas as importações:

import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Toolkit; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.swing.JFrame; import javax.swing.JLabel;
Listagem 1. Incluindo todas as importações

Agora, vamos discutir sobre essas importações:

Agora vamos ver como fazemos para definir o método main no nosso exemplo.

public class MouseTracker extends JFrame implements MouseListener, MouseMotionListener { JLabel mousePosition; public static void main(String args[]) { new MouseTracker().start(); }
Listagem 2. Definindo a classe e método main

O nome da classe é MouseTracker, e ela implementa as classes MouseListener e MouseMotionListener que são usados para receptar qualquer evento do mouse como o clique, arrastar, etc. Isso é feito implementando os métodos destas interfaces, mas iremos definir os métodos mais tarde.

Podemos definir uma JLabel com o nome mousePosition que é usada para mostrar notificações nas atuais coordenadas do mouse, definir o método principal e chamar o método start, que irá conter todo o processamento.

Agora iremos implementar os métodos dentro dessas interfaces.

@Override public void mouseClicked(MouseEvent e) { mousePosition.setText("Mouse clicked at coordinate : ["+e.getX()+","+e.getY()+"]"); } @Override public void mouseEntered(MouseEvent e) { mousePosition.setText("Current mouse Coordinates : ["+e.getX()+","+e.getY()+"]"); } @Override public void mouseExited(MouseEvent e) { mousePosition.setText("Mouse outside access window"); } @Override public void mousePressed(MouseEvent e) { mousePosition.setText("Mouse pressed at coordinates : ["+e.getX()+","+e.getY()+"]"); } @Override public void mouseReleased(MouseEvent e) { mousePosition.setText("Current mouse coordinates : ["+e.getX()+","+e.getY()+"]"); } @Override public void mouseDragged(MouseEvent e) { mousePosition.setText("Mouse dragged at coordinates : ["+e.getX()+","+e.getY()+"]"); } @Override public void mouseMoved(MouseEvent e) { mousePosition.setText("Mouse moved to coordinates : ["+e.getX()+","+e.getY()+"]"); }
Listagem 3. Definindo métodos das interfaces

Abaixo teremos uma explicação detalhada do código da listagem 3:

Na listagem 4 iremos definir o método start.

public void start() { mousePosition=new JLabel(); addMouseListener( this ); // listens for own mouse and addMouseMotionListener( this ); // mouse-motion events setLayout(new FlowLayout(1)); add(mousePosition); Dimension size = Toolkit.getDefaultToolkit().getScreenSize(); setSize(size ); setUndecorated(true); setVisible( true ); setDefaultCloseOperation(EXIT_ON_CLOSE); } }
Listagem 4. Definindo o método start

Nós adicionamos o mouseListener em nosso quadro, para que sempre que qualquer evento do mouse ocorrer dentro do quadro, ele poderá ser reportado.

Abaixo podemos ver o código-fonte completo do nosso exemplo:

import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Toolkit; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import javax.swing.JFrame; import javax.swing.JLabel; public class MouseTracker extends JFrame implements MouseListener, MouseMotionListener { JLabel mousePosition; @Override public void mouseClicked(MouseEvent e) { mousePosition.setText("Mouse clicado na coordenada : ["+e.getX()+","+e.getY()+"]"); } @Override public void mouseEntered(MouseEvent e) { mousePosition.setText("Coordenada atual do mouse : ["+e.getX()+","+e.getY()+"]"); } @Override public void mouseExited(MouseEvent e) { mousePosition.setText("O Mouse está fora da janela de acesso"); } @Override public void mousePressed(MouseEvent e) { mousePosition.setText("Mouse pressionado nas coordenadas : ["+e.getX()+","+e.getY()+"]"); } @Override public void mouseReleased(MouseEvent e) { mousePosition.setText("Coordenada atual do mouse : ["+e.getX()+","+e.getY()+"]"); } @Override public void mouseDragged(MouseEvent e) { mousePosition.setText("Mouse arrastado nas coordenadas : ["+e.getX()+","+e.getY()+"]"); } @Override public void mouseMoved(MouseEvent e) { mousePosition.setText("Mouse movido para as coordenadas : ["+e.getX()+","+e.getY()+"]"); } public static void main(String args[]) { new MouseTracker().start(); } public void start() { mousePosition=new JLabel(); addMouseListener( this ); // listens for own mouse and addMouseMotionListener( this ); // mouse-motion events setLayout(new FlowLayout(1)); add(mousePosition); Dimension size = Toolkit.getDefaultToolkit().getScreenSize(); setSize(size ); setUndecorated(true); setVisible( true ); setDefaultCloseOperation(EXIT_ON_CLOSE); } }
Listagem 5. Código-fonte completo da aplicação

Conclusão

Nesse artigo vimos como obter dados de interação do usuário que são muito importantes em alguns campos do desenvolvimento, como o desenvolvimento de jogos, por exemplo.

Assim temos um exemplo que podemos usar como modelo para diversas aplicações que precise capturar quaisquer ações do mouse.

Espero que tenham gostado e até a próxima.

Artigo traduzido e originalmente publicado em MrBool
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados