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:
- Rastrear as coordenadas do mouse atual.
- Determinar evento como Mouse Clicks, Mouse Pressed, e Mouse Dragged etc.
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;
Agora, vamos discutir sobre essas importações:
- Dimension class é usada para armazenar as coordenadas; para nosso programa, armazenará o tamanho da tela coordenadas na Dimension object.
- FlowLayout é o layout de todos os componentes do quadro
- ToolKit é usado para obter o tamanho da tela
- MouseEvent diz se um evento irá ocorrer dentro do componente do quadro.
- MouseListener e MouseMotionListener são usados para receptar qualquer evento do mouse como o clique do mouse, arraste etc.
- JFrame é usado para definir um quadro
- JLabel é utilizado para definir um rótulo
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();
}
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()+"]");
}
Abaixo teremos uma explicação detalhada do código da listagem 3:
- Todos os métodos contêm um argumento do tipo MouseEvent que contêm as dados, como informações de coordenadas do mouse.
- O getX() e getY() são usado para obter as coordenadas x e y do mouse.
- Método mouseClicked é chamado uma vez que há um movimento do mouse dentro do quadro.
- Método mouseEntered é chamado quando o mouse vem de uma janela exterior ao quadro.
- Método mouseExited é chamado quando o mouse passa fora do quadro i.e. JFrame
- Método mousePressed é chamado quando o mouse é pressionado.
- Método mouseReleased é chamado quando o botão do mouse é liberado.
- Método mouseDragged é chamado quando o mouse é arrastado
- Método mouseMoved é chamado quando o mouse é mouse de localização.
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);
}
}
Nós adicionamos o mouseListener em nosso quadro, para que sempre que qualquer evento do mouse ocorrer dentro do quadro, ele poderá ser reportado.
- Definimos o layout do quadro como FlowLayout e adicionamos o JLabel no frame.
- Podemos obter o tamanho da tela usando o método: Toolkit.getDefaultToolkit().getScreenSize().
- Definimos o tamanho do quadro como o tamanho da tela para que o quadro seja quadro de tamanho completo.
- Podemos definir o quadro como Undecorated para que o quadro não tenha nenhuma barra de título.
- Podemos definir a visibilidade do quadro como true.
- Definimos o setDefaultCloseOperation como EXITONCLOSE para que o programa fique fechado quando o quadro é fechado.
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);
}
}
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.