Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - dusttin

#1
Hola,

estoy con el PFC y lo hago en java y tengo un error tontisimo con la captura de las coordenadas del ratón mediante los métodos MouseListener  y MouseMotionListener.

El problema es que  actionEvent  no me devuelve las coordenadas de la punta del ratón, sino que hay un desface hacia abajo y hacia la derecha.

Os pongo el código de ejemplo para ver si es que yo no defino bien las clases:


Código clase jframe:


import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JFrame;
import javax.swing.JPanel;
public class Escritorio extends JFrame implements MouseListener{
   private static final long serialVersionUID = 1L;
   public Escritorio(){
      this.setSize(800,600);
      this.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
      this.addMouseListener(this);
      //this.pack();   
   }
   
   
   public static void main(String[] args) {
      // TODO Auto-generated method stub
      java.awt.EventQueue.invokeLater(new Runnable(){
         public void run(){
            new Escritorio().setVisible(true);
         }
      });
   }
   

   public void mouseClicked(MouseEvent e) {
      // TODO Auto-generated method stub
      this.getContentPane().add(new puerta(e.getX(), e.getY()));
      this.repaint();
      
   }

Código clase JLabel ;

import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;

public class puerta extends JLabel{
   private static final long serialVersionUID = 1L;
      
      public puerta(int x, int y){
         
         this.setLocation(x,y);
         this.setSize(50,50);
         
      }
      
      public void paint(Graphics g){
         g.setColor(Color.BLACK);
         g.fillRect(0,0,getWidth()-1,getHeight()-1);
         super.paint(g);
      }
      
      
}

esto es un ejemplo, si lo solucionamos aquí luego aplico la solución al otro código.
En este código también me pasa lo mismo.