estoy haciendo un programa donde tengo que mover un triangulo(translacion) y pues he podidio
implementar esta parte del codigo y el problema es que el metodo dragged no me esta funcionando la figura geometrica que estoy arrastrando es un triangulo
si me pueden ayudar se lo agrdeceria
Código:
public class InterfazTangram extends Canvas implements MouseMotionListener{
private boolean arrastrando = false;
//x en la que estaba anteriormente el ratón.
private int xAnteriorRaton;
//y en la que estaba anteriormente el ratón
private int yAnteriorRaton;
//x en la que estaba anteriormente el ratón 1.
private int xAnteriorRaton1;
//y en la que estaba anteriormente el ratón 1.
private int yAnteriorRaton1;
//x en la que estaba anteriormente el ratón 2.
private int xAnteriorRaton2;
//y en la que estaba anteriormente el ratón 2.
private int yAnteriorRaton2;
int coordX[ ] = { 50,100,150};
int coordY[ ] = { 100,150,150};
public InterfazTangram()
{
addMouseMotionListener(this);
}
public void paint(Graphics g)
{
g.setColor(Color.RED);
//g.fillRect(coordX,coordY,3);
//g.setColor(Color.blue);
g.fillPolygon(coordX, coordY, 3);
// g.drawLine(alto, ancho, x, y);
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
// Si comienza el arrastre ...
if (!arrastrando)
{
// ... y el ratón está dentro del rectángulo
if (estaDentro(e))
{
// Se guardan las posiciones del ratón
xAnteriorRaton = coordX[0];
yAnteriorRaton = coordY[0];
xAnteriorRaton1 = coordX[1];
yAnteriorRaton1 = coordY[1];
xAnteriorRaton2 = coordX[2];
yAnteriorRaton2 = coordY[2];
// y se marca que ha comenzado el arrastre.
arrastrando = true;
}
}
else
{
// Si ya había empezado el arrastre, se calculan las nuevas
// coordenadas del rectángulo
coordX[0] = (coordX[0] + e.getX()) - xAnteriorRaton;
coordY[0] = (coordY[0] + e.getY()) - yAnteriorRaton;
coordX[1] = (coordX[1] + e.getX()) - xAnteriorRaton1;
coordY[1] = (coordY[1] + e.getY()) - yAnteriorRaton1;
coordX[2] = (coordX[2] + e.getX()) - xAnteriorRaton2;
coordY[2] = (coordY[2] + e.getY()) - yAnteriorRaton2;
// Se guarda la posición del ratón para el siguiente cálculo
xAnteriorRaton = e.getX();
yAnteriorRaton = e.getY();
xAnteriorRaton1 = e.getX();
yAnteriorRaton1 = e.getY();
xAnteriorRaton2 = e.getX();
yAnteriorRaton2 = e.getY();
// y se manda repintar el Canvas
repaint();
}
}
private boolean estaDentro(MouseEvent e)
{
if (
(e.getX() > coordX[0] && e.getX() > coordX[1] && e.getX() > coordX[2] )
&& (e.getX() < (coordX[0] + (coordX[2]-coordX[1])))
&& (e.getY() >coordY[0] && e.getY() > coordY[1] && e.getX() > coordY[2])
&& (e.getY() < (coordY[0] + (coordY[0]-coordY[1]))))
{
return true;
}
return false;
}
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
arrastrando = false;
}
public static void main(String[] args)
{
JFrame v = new JFrame("Arrastrar Grafico");
InterfazTangram c = new InterfazTangram();
v.getContentPane().add(c);
v.setSize(500,500);
//v.pack();
v.setVisible(true);
v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}