JPanel para desenhar com evento de mouse

2 respostas
D

Ola meus amigos, estou tentando fazer um panel que desenhe quando eu clicar e arrastar com o botao esquerdo e q apague quando clicar e arrastar com botao direiro. Olhem o codigo ai e se puder me ajudem por favor pois ele so ta desenhando, nao esta apagando.

import java.awt.Color;

import java.awt.Point;

import java.awt.Graphics;

import java.awt.event.MouseEvent;

import java.awt.event.MouseMotionAdapter;

import javax.swing.JPanel;

public class PaintPanel extends JPanel
{
private int pointCount = 0; // número de contagem de pontos

// array de 10000 referências java.awt.Point
private Point points[] = new Point[ 10000 ];

private boolean button = true;

// configura a GUI e registra handler de evento de mouse

public PaintPanel()

{

// trata evento de movimento de mouse do frame

addMouseMotionListener(
new MouseMotionAdapter()// classe interna anônima

{

// armazena coordenadas de arrastar e repinta

public void mouseDragged( MouseEvent event )

{

if (event.isMetaDown()){

if ( pointCount < points.length )

{

points[ pointCount ] = event.getPoint(); // localiza o ponto

pointCount++; // incrementa número de pontos em array

button = false;

repaint(); // repinta JFrame

}//fim if interno

}else{

if ( pointCount < points.length )

{

points[ pointCount ] = event.getPoint(); // localiza o ponto

pointCount++; // incrementa número de pontos em array

button = true;

repaint(); // repinta JFrame

}//fim if interno

}//fim do if else

} // fim do método mouseDragged

} // fim da classe interna anônima

); // fim da chamada para addMouseMotionListener

} // fim do construtor PaintPanel
// desenha oval em um quadro delimitador de 4x4 no local especificada na janela

public void paintComponent( Graphics g )

{

super.paintComponent( g ); // limpa a área de desenho
// desenha todos os pontos no array

if (button = true){

g.setColor(Color.BLUE);

}else{

g.setColor(Color.WHITE);

}

for ( int i = 0; i < pointCount; i++ )

g.fillOval( points[ i ].x, points[ i ].y, 4, 4 );

} // fim do método paintComponent

} // fim da classe PaintPanel

2 Respostas

hvidal

Olá,

Você provavelmente esqueceu que a comparação em java é ‘==’ e não simplesmente ‘=’…

// desenha todos os pontos no array
 if (button == true){    <<<<<<<<< FALTOU UM CARACTER "IGUAL"
   g.setColor(Color.BLUE);
 }else{
   g.setColor(Color.WHITE);
 }

Grande abraço,
Hugo.

D

Que lerdeza a minha eim… mas ainda ta acontecendo o seguinte, quando clico com o botao esquerdo e arrasto ele desenha beleza no painel, quando clico com o botao direito ao inves de ele comecar apagar de onde eu estou comecando a arrastar ele apaga tudo q ja desenhei e se eu clicar com o botao esquerdo ele mostra tudo de novo.
e um erro logico, sera q alguem pode me ajudar?

Criado 17 de setembro de 2006
Ultima resposta 18 de set. de 2006
Respostas 2
Participantes 2