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.
|