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