Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda en java translacion de figura

Estas en el tema de Ayuda en java translacion de figura en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 26/02/2011, 21:10
 
Fecha de Ingreso: octubre-2009
Mensajes: 29
Antigüedad: 15 años, 1 mes
Puntos: 0
Ayuda en java translacion de figura

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);
	    }
	

}
  #2 (permalink)  
Antiguo 28/02/2011, 13:40
Avatar de sivadmp  
Fecha de Ingreso: febrero-2011
Ubicación: La Paz - Bolivia
Mensajes: 293
Antigüedad: 13 años, 9 meses
Puntos: 20
Respuesta: Ayuda en java translacion de figura

hola no entiend o bien tu codigo,

pero la solucion que te doy, tienes que actualizar la pantalla con repaint()

un ejemplo para que te des cuenta

Código java:
Ver original
  1. public class Hello extends JPanel implements MouseMotionListener {
  2.  
  3.     private int x = 100;
  4.     private int y = 100;
  5.     private String str="Hola Mundo";
  6.     private Graphics2D g2d;
  7.     Hello() {
  8.         this.setBackground(Color.red);
  9.          addMouseMotionListener(this);
  10.     }
  11.  
  12.     protected void paintComponent(Graphics g) {
  13.         super.paintComponent(g);
  14.         g2d = (Graphics2D) g;
  15.         g2d.drawString(str,x,y);
  16.         g2d.setColor(Color.blue);
  17.         this.repaint();
  18.     }
  19.  
  20.     @Override
  21.     public void mouseDragged(MouseEvent arg0) {
  22.         int xx=arg0.getX();
  23.         int yy=arg0.getY();
  24.         x=xx;
  25.         y=yy;
  26.        
  27.         this.repaint();    
  28.     }
  29.  
  30.     @Override
  31.     public void mouseMoved(MouseEvent arg0) {
  32.     }
  33.  
  34.     public static void main(String[] args) {
  35.         JFrame fr = new JFrame();
  36.         Hello tr = new Hello();
  37.  
  38.         fr.add(tr, BorderLayout.CENTER);
  39.         fr.setSize(500, 500);
  40.         fr.setVisible(true);
  41.     }
  42. }

espero haberte ayudado saludos
  #3 (permalink)  
Antiguo 28/02/2011, 21:04
Avatar de jcMouse  
Fecha de Ingreso: noviembre-2009
Ubicación: Bolivia
Mensajes: 116
Antigüedad: 15 años
Puntos: 9
Respuesta: Ayuda en java translacion de figura

segun tu codigo, la variable "arrastrando" siempre esta en FALSE, te aconsejo que implemente el metodo mousepressed, asi cuando presiones el boton del mouse, el estado cambie a TRUE, porque sino, no se movera nunca

la funcion mouseDragged no se esta ejecutando, la parte que dice

if (!arrastrando)

nunca se realiza, y su ELSE de ese IF, se ejecuta, pero supongo que ahi debes tener un error, ya que "xAnteriorRaton" no tiene valor
__________________
Problem?
Estoy aquí
Foro Code Army

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:17.