FORUM DARKERS

Tecnologia & Informática => Programação => Java => Topic started by: Anonymous on 14 de November , 2007, 10:26:01 AM

Title: Eventos do Mouse
Post by: Anonymous on 14 de November , 2007, 10:26:01 AM
Quotepor: Rafael Guimarães Sakurai
Fonte: Portal Java (//http://www.portaljava.com.br/home//modules.php?name=Content&pa=showpage&pid=130)


Introdução:

Esse tutorial demonstra como usar os eventos do mouse.



Classe MouseEvent

MouseEvent é uma classe que indica quais ações do mouse ocorreram em
cima de um componente.
Os eventos são:

·  Um botão do mouse é pressionado
·  Um botão do mouse é liberado
·  Um botão do mouse é clicado (junção do pressionado com o liberado)
·  O cursor do mouse entra em um componente
·  O cursor do mouse sai do componente - Eventos de movimentação do mouse
·  A movimentação do mouse dentro do componente
·  A movimentação do mouse com algum botão pressionado



Botões do mouse

Com o método getButton() do MouseEvent você pode estar
pegando qual o botão que está sendo pressionado.

(//http://i19.tinypic.com/6yfjnzc.gif)

Botão 1 – Botão Esquerdo       
Botão 2 – Botão Scroll
Botão 3 – Botão Direito
Caso o retorno do getButton() seja 0 (zero) nenhum botão está sendo usado.



Posição do Mouse

Com o método getPoint() do MouseEvent você pode estar pegando as
coordenadas X e Y do mouse.
Você também pode estar usando os métodos getX() ou getY() para pegar
as coordenadas X e Y respectivamente.



Interface MouseListener

  A interface MouseListener fica ouvindo as ações do mouse e exige que
você implemente cinco métodos:

·  public void mouseClicked(MouseEvent e) Um botão é
clicado (junção do mousePressed com mouseReleased)
·  public void mouseEntered(MouseEvent e) O cursor do mouse entra em um componente.
·  public void mouseExited(MouseEvent e) O cursor do mouse sai de um componente.
·  public void mousePressed(MouseEvent e) Um botão do mouse é precionado.
·  public void mouseReleased(MouseEvent e)



Exemplo:

Para demonstrar o uso das ações do mouse teremos um Applet Tela que desenha um
Quadrado e você pode estar usando os eventos do mouse em cima do quadrado.


Quadrado.java

Quoteimport java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
/**
* Desenha um Quadrado
*/
public class Quadrado{
private double posx; // Posição da coordenada x
private double posy; // Posição da coordenada y
private double largura; // Largura do quadrado
private double altura; // Altura do quadrado
private Color cor; // Cor do quadrado
/**
* Construtor do Quadrado
*/
public Quadrado(double posx, double posy, double largura, double altura, Graphics2D g2d){
this.posx = posx;
this.posy = posy;
this.largura = largura;
this.altura = altura;
this.cor = Color.black;
// chama o método para pintar o quadrado na Tela
draw(g2d);
}
/*public void paint(Graphics g) {
// Converte o Graphics para Graphics2D para desenhar o quadrado
Graphics2D g2d = (Graphics2D) g;
// Cria um retângulo
//
// Marca qual será a cor do retângulo
g2d.setColor(cor);
// Preenche o retângulo com a cor marcada
g2d.fill(quadrado);
// Desenha o retângulo
g2d.draw(quadrado);
}*/
public void draw(Graphics2D g2d) {
// Desenha o quadrado
Rectangle2D.Double quadrado = new Rectangle2D.Double(posx, posy, largura, altura);
g2d.setPaint(new GradientPaint((int)posx, (int)posy, cor, (int)(posx + largura + 10),
(int)(posy + altura + 10), Color.white, true));
g2d.fill(quadrado);
}
/**
* Pega a posição da coordenada X do quadrado
*/
public double getPosx() {
return posx;
}
/**
* Seta a posição da coordenada X do quadrado
*/
public void setPosx(double posx) {
this.posx = posx;
}
/**
* Pega a posição da coordenada Y do quadrado
*/
public double getPosy() {
return posy;
}
/**
* Seta a posição da coordenada Y do quadrado
*/
public void setPosy(double posy) {
this.posy = posy;
}
/**
* Pega a largura do quadrado
*/
public double getLargura() {
return largura;
}
/**
* Seta a largura do quadrado
*/
public void setLargura(double largura) {
this.largura = largura;
}
/**
* Pega a altura do quadrado
*/
public double getAltura() {
return altura;
}
/**
* Seta a altura do quadrado*/
public void setAltura(double altura) {
this.altura = altura;
}
/**
* Pega a cor do quadrado
*/
public Color getCor() {
return cor;
}
/**
* Seta a cor do quadrado
*/
public void setCor(Color cor) {
this.cor = cor;
}
}



Tela.java

Quoteimport java.applet.Applet;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
/**
* Tela onde terá os eventos do mouse
*/
public class Tela extends Applet implements MouseListener {
// Cria o objeto quadrado
Quadrado quadrado = null;
public void init() {
// Altera o tamanho do Applet
this.setSize(new Dimension(200, 200));
// Pinta o Applet de branco
this.setBackground(Color.white);
// Cria um grafico 2D a partir do grafico normal.
Graphics2D g2d = (Graphics2D) this.getGraphics();
// Desenha um quadrado
quadrado = new Quadrado(10, 20, 30, 40, g2d);
// O MouseListener passa a escutar os eventos do mouse dentro desse Applet
this.addMouseListener( this );
}
public void paint(Graphics g) {
//Pinta o quadrado
quadrado.draw((Graphics2D)g);
}
// Controla os eventos do clique do mouse
public void mouseClicked(MouseEvent e) {
// Verifica se clicou em cima do quadrado
if (((e.getX() > quadrado.getPosx()) && (e.getY() > quadrado.getPosy()))
&& ((e.getX() < (quadrado.getLargura() + quadrado.getPosx())) && (e.getY() <
(quadrado.getAltura() + quadrado.getPosy())))) {
// Troca a cor do quadrado
if(quadrado.getCor() == Color.black) {
// Pinta o quadrado de azul
quadrado.setCor(Color.blue);
}
else {
// Pinta o quadrado de preto
quadrado.setCor(Color.black);
}
}
// Repinta o quadrado
quadrado.draw((Graphics2D)this.getGraphics());
}
// Método que é acionado quando você passa com o mouse por cima do componente
// que está sendo implementado o MouseListener
public void mouseEntered(MouseEvent e) {
// Pinta o quadrado de azul
quadrado.setCor(Color.blue);
// Muda a posição do quadrado
quadrado.setPosx(50);
quadrado.setPosy(50);
// Repinta a tela
repaint();
}
// Método que é acionado quando você retira o mouse de cima do componente
// que está sendo implementado o MouseListener
public void mouseExited(MouseEvent e) {
// Pinta o quadrado de black
quadrado.setCor(Color.black);
// Repinta a tela
repaint();
}
// Método que é acionado quando você pressiona o mouse em cima do componente
// que está sendo implementado o MouseListener
public void mousePressed(MouseEvent e) {
// Aumenta o tamanho do quadrado quando você pressiona o mouse dentro da Tela
quadrado.setPosx(quadrado.getPosx()-20);
quadrado.setPosy(quadrado.getPosy()-20);
quadrado.setLargura(quadrado.getLargura()+40);
quadrado.setAltura(quadrado.getAltura()+40);
// repinta a tela
repaint();
}
// Método que é acionado quando você solta o click do mouse
public void mouseReleased(MouseEvent e) {
// Aumenta o tamanho do quadrado quando você pressiona o mouse dentro da Tela
quadrado.setPosx(quadrado.getPosx()+20);
quadrado.setPosy(quadrado.getPosy()+20);
quadrado.setLargura(quadrado.getLargura()-40);
quadrado.setAltura(quadrado.getAltura()-40);
// repinta a tela
repaint();
}
}



Tela.html

Quote

Testando os eventos do mouse com o MouseListener


Testando os eventos do mouse com o MouseListener










  Para executar o applet, você pode tanto abrir a pagina Tela.html com
o Internet Explorer, ou usando o Applet Viewer (appletviewer.exe).
  Para executar pelo Applet Viewer, você digita o seguinte comando no prompt:
appletviewer Tela.html
Quando você inicia o Applet

(//http://i11.tinypic.com/6ka55l0.gif)



Quando você coloca o mouse na área do Applet é acionado o método
mouseEntered que muda a posição do quadrado e pinta ele de azul:

(//http://i2.tinypic.com/6lc42hi.gif)




Se você tirar o mouse de cima do Applet é acionado o método
mouseExited que pinta o retângulo de preto:

(//http://i9.tinypic.com/89uznkx.gif)



Se você clicar e segurar dentro do Applet é acionado o
método mousePressed, que aumenta o tamanho do quadrado e troca de cor:

(//http://i5.tinypic.com/6nt35gl.gif)



Se você soltar o botão do mouse é acionado o método
mouseReleased, que faz o quadrado voltar ao tamanho original:

(//http://i6.tinypic.com/6lc42hi.gif)



E ao clicar dentro da área do quadrado, ocorre os métodos
mousePressed (que aumenta o tamanho do quadrado),
mouseReleased ( que volta o tamanho do quadrado ao normal) e o
mouseClicked (que troca a cor de azul para preto e vice-versa).

(//http://i11.tinypic.com/6uon6eg.gif)   (//http://i18.tinypic.com/89uznkx.gif)




Interface MouseMotionListener

A interface MouseMotionListener fica ouvindo as ações de movimentação
do mouse e exige que você implemente dois métodos:

·  void mouseDragged(MouseEvent e) A movimentação do mouse com algum
botão pressionado.
·  void mouseMoved(MouseEvent e) A movimentação do mouse dentro do componente.


Exemplo:

Nesse exemplo vou apenas alterar a classe Tela.java usada no exemplo anterior.


Tela.java

Quoteimport java.applet.Applet;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
/**
* Tela onde terá os eventos do mouse
*/
public class Tela extends Applet implements MouseMotionListener {
// Cria o objeto quadrado
Quadrado quadrado = null;
public void init() {
// Altera o tamanho do Applet
this.setSize(new Dimension(200, 200));
// Pinta o Applet de branco
this.setBackground(Color.white);
// Cria um grafico 2D a partir do grafico normal.
Graphics2D g2d = (Graphics2D) this.getGraphics();
// Desenha um quadrado
quadrado = new Quadrado(10, 20, 30, 40, g2d);
// O MouseMouseListener passa a escutar os eventos de ação do mouse
// dentro desse Applet
this.addMouseMotionListener( this );
}
public void paint(Graphics g) {
//Pinta o quadrado
quadrado.draw((Graphics2D)g);
}
// Método ocorre quando o mouse esta pressionada dentro do Applet
public void mouseDragged(MouseEvent e) {
// Muda a posição do quadrado
quadrado.setPosx(e.getX());
quadrado.setPosy(e.getY());
// Repinta a tela
repaint();
}
// Método ocorre enquanto o mouse está se movendo dentro do Applet
public void mouseMoved(MouseEvent e) {
// Pego um numero randomico de 1 a 5
int x = ((int)(Math.random()*5) + 1);
// De acordo com o numero randômico troco a cor do quadrado
switch(x) {
case 1:
quadrado.setCor(Color.black);
break;
case 2:
quadrado.setCor(Color.green);
break;
case 3:
quadrado.setCor(Color.blue);
break;
case 4:
quadrado.setCor(Color.red);
break;
case 5:
quadrado.setCor(Color.yellow);
break;
}
// Repinta a tela
repaint();
}
}



Quando você passa o mouse dentro do Applet o quadrado ira mudar
de cor, pois quando você move o mouse dentro do Applet o método
mouseMoved é acionado:

(//http://i16.tinypic.com/6tpzz0y.gif)  (//http://i12.tinypic.com/6wmpt7q.gif)  (//http://i1.tinypic.com/6yd03kg.gif)



Se você mover o mouse com o botão pressionado será acionado
o método mouseMoved, que irá mover a posição do quadrado de
acordo com a posição do mouse:

(//http://i10.tinypic.com/7xdln50.gif)  (//http://i3.tinypic.com/832gggw.gif)  (//http://i16.tinypic.com/6tfqrs7.gif)




Conclusão

Esse artigo visa auxiliar no uso de eventos do mouse usando a classe
MouseEvent e as interfaces MouseListener e MouseMotionListener.


Bibliografia

[SUN] Java 2 SDK, Standard Edition Documentation (version 1.4.2).
Disponível em: http://java.sun.com/j2se/1.4.2/docs/index.html (//http://java.sun.com/j2se/1.4.2/docs/index.htmlhttp://java.sun.com/j2se/1.4.2/docs/index.html)
Title: Re: Eventos do Mouse
Post by: tiaguito-.- on 14 de November , 2007, 12:04:07 PM
Muito bom mesmo, valeu cara!