JAVA GAMES 2D::Eventos do Mouse::13
Autor: Guilherme | Publicado: 2012-06-17T09:45:00-07:00


DOWNLOAD DOS EXEMPLOS AQUI

Olá pessoal!

Nesse tutorial iremos aprender uma das maneiras de como usar os Eventos &nbsp;do Mouse, é muito semelhante ao tutorial anterior de Eventos do Teclado, para o nosso tutorial de hoje utilizaremos duas Interfaces: MouseListener e MouseMotionListener.&nbsp;

(Criem um pacote tutorial13 no nosso projeto JAVAGAMES2D com o arquivo Game.java)





Muito bem....Vamos lá!

A primeira coisa a ser feita é implementar as interfaces na nossa Classe Game.java




public class Game extends JFrame implements MouseListener, MouseMotionListener{


Lembrem de adicionar a implementação dos métodos dessas interfaces, observem que podemos implementar quantas interfaces quisermos, bastando apenas separar por virgula, então é possível usar eventos de teclado e mouse num mesmo jogo...
Agora veja os método que serão implementados no final da Classe Game.java:


@Override
 public void mouseClicked(MouseEvent e) {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void mouseEntered(MouseEvent e) {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void mouseExited(MouseEvent e) {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void mousePressed(MouseEvent e) {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void mouseReleased(MouseEvent e) {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void mouseDragged(MouseEvent e) {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void mouseMoved(MouseEvent e) {
  // TODO Auto-generated method stub
  
 }


Recomendo apagar esses comentários gerados (caso você tenha mandado gerar&nbsp;automaticamente), Muito bem... vamos lá....
Os métodos mouseMoved() e mouseDragged() são da interface MouseMotionsListener, e os outros métodos são de MouseListener,&nbsp; bem... vejamos para quê serve cada um desses eventos:

mouseMoved(): é acionado todo vez que você mover o mouse.
mouseDragged(): é acionado toda vez que você clica segura e arrasta.

mouseReleased(): é acionado quando você libera o clique.
mousePressed(): é acionado no momento em quê o clique é pressionado e mantamos pressionado.
mouseExited(): é acionado quando o cursor é retirado de cima de um elemento.
mouseEntered(): é acionado quando o cursor ficar sobre um elemento.
mouseClicked():&nbsp;é acionando quando clicamos com o mouse.

Agora a próxima etapa é adicionar um escutador para esses eventos no nosso JFrame dentro do método inicializar(), &nbsp;se não adicionarmos esses escutadores nenhum desses métodos serão executados quando os eventos forem acionados (lembrando, o escutador é que manda executar esses métodos quando o evento for acionado).
Observe o código abaixo:


public void inicializar() {
  setTitle("Titulo do Jogo!");
  setSize(janelaW, janelaH);
  setResizable(false);
  setDefaultCloseOperation(EXIT_ON_CLOSE);
  setLayout(null);
  setVisible(true);
  backBuffer = new BufferedImage(janelaW, janelaH, BufferedImage.TYPE_INT_RGB);
  
  //AQUI ESTAMOS ADICIONANDO OS ESCUTADORES DE EVENTOS DO MOUSE
  addMouseListener(this);
  addMouseMotionListener(this);
 }


Muito simples! não é?
Agora vamos ver um exemplo de uso de eventos do mouse, no nosso exemplo iremos mover uma mira, &nbsp;exibir as coordenadas do cursor no JFrame e quando clicarmos exibir uma mensagem!
(LEIAM OS COMENTÁRIOS DO CÓDIGO COM ATENÇÃO)


import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Game extends JFrame implements MouseListener, MouseMotionListener{

 BufferedImage backBuffer; 
 int FPS = 30;
 int janelaW = 500;
 int janelaH = 500;
 
 //VARIAVEIS QUE VAMOS UTILIZAR
 //UMA IMAGEM PARA REPRESENTAR A MIRA
 //E AS SUAS COORDENADAS X e Y
 //NÃO SE ESQUEÇA DE OLHAR O MÉTODO desenharGraficos()
 //e os métodos de eventos que é onde iremos tratar algumas coisas
 ImageIcon mira = new ImageIcon("src/tutor13/mira.png");
 int xMira;
 int yMira;
 
 public void atualizar() {

 }

 public void desenharGraficos() {
  Graphics g = getGraphics(); //ISSO JÁ ESTAVA AQUI
  Graphics bbg = backBuffer.getGraphics();//ISSO TAMBÉM JÁ ESTAVA AQUI...
  bbg.setColor(Color.WHITE);
  bbg.fillRect(0, 0, janelaW, janelaH); //PINTA O FUNDO COM UM QUADRADO BRANCO
  
  bbg.setColor(Color.RED);
  bbg.setFont(new Font("helvica",Font.BOLD,20));
  bbg.drawString("X=: "+xMira+"  Y="+yMira, 50, 100); //EXIBE UM TEXTO + O VALOR DA TECLA PRESSIONADA
  //QUE ESTÁ NA VARIÁVEL teclaPressionada
  
  //AQUI DESENHAMOS A MIRA, O -25 É PARA FICAR CENTRALIZADA COM O CURSOR
  bbg.drawImage(mira.getImage(), xMira-25, yMira-25, this);
  
  //================================================================================== 
  g.drawImage(backBuffer, 0, 0, this);//OBS: ISSO DEVE FICAR SEMPRE NO FINAL!
 }

 public void inicializar() {
  setTitle("Titulo do Jogo!");
  setSize(janelaW, janelaH);
  setResizable(false);
  setDefaultCloseOperation(EXIT_ON_CLOSE);
  setLayout(null);
  setVisible(true);
  backBuffer = new BufferedImage(janelaW, janelaH, BufferedImage.TYPE_INT_RGB);
  
  //AQUI ESTAMOS ADICIONANDO OS ESCUTADORES DE EVENTOS DO MOUSE
  addMouseListener(this);
  addMouseMotionListener(this);
 }

 public void run() {
  inicializar();
  while (true) {
   atualizar();
   desenharGraficos();
    try {
     Thread.sleep(1000/FPS);
    } catch (Exception e) {
     System.out.println("Thread interrompida!");
    }
  }
 }
 public static void main(String[] args) {
  Game game = new Game();
  game.run();
 }
 public void mouseClicked(MouseEvent e) {
  JOptionPane.showMessageDialog(null, "Você clicou!!!!");
 }
 public void mouseEntered(MouseEvent e) {

 }
 public void mouseExited(MouseEvent e) {
 
 }
 public void mousePressed(MouseEvent e) {
 
 }
 public void mouseReleased(MouseEvent e) {
 
 }
 public void mouseDragged(MouseEvent e) {
  
 }
 public void mouseMoved(MouseEvent e) {
  //AQUI X e Y DA MIRA RECEBE AS COORDENADAS DO CURSOR
  xMira = e.getX();
  yMira = e.getY();
 }
}


Veja como ficou:







Muito simples não é ?
Até o próximo tutorial!!! não deixem de comentar ou tirar duvidas! (assim que dé, respondo!!!)