Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/08/2015, 21:34
Sebas_0101
 
Fecha de Ingreso: agosto-2015
Mensajes: 16
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Dibujando con JPanel

Que tal mi buen amigo. Quiero comentarte que aparece desfasado debido a que el área donde inicia el JFrame es distinta al área del muse. Es decir las coordenadas del mouse están en función del tamaño de tu monitor. Si quieres que no haya desface deberás hacer el área del JFrame igual al de tu monitor o identificar el punto de partida de tu JFrame y restarle ese valor a la coordenada. A continuación t muestra tu ejemplo modificado.


import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.PointerInfo;

import javax.swing.*;


public class Mouse1 {

public static void main(String[] args) {

Frame1 frame1 = new Frame1();


while(true){
frame1.canvas1.leer_mouse();
frame1.canvas1.repaint();
}

}
}

class Frame1 extends JFrame{

Canvas1 canvas1 = new Canvas1();

public Frame1(){

JFrame a = new JFrame("Ventana");

a.setBounds(0, 0, 250, 200);
a.setVisible(true);
a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
a.setResizable(false);

a.add(canvas1);
}
}
class Canvas1 extends Canvas{

private int x, y;


public void paint(Graphics g){
//super.paint(g);

g.drawString("Hola mundo", 0, 0);
g.drawString("X:" + x , 10, 20);
g.drawString("Y:" + y , 10, 60);
//g.drawOval(x-100, y-100, 12, 12);
g.drawOval(x, y-26, 12, 12);


}

public void leer_mouse(){
Point coord_mouse;
PointerInfo info_mouse;

info_mouse = MouseInfo.getPointerInfo();
coord_mouse = info_mouse.getLocation();

x = coord_mouse.x;
y = coord_mouse.y;

System.out.println("x:" + x);
System.out.println("y:" + y);

}
}

como puedes observar he restado 26 al eje y en g.drawOval(x, y-26, 12, 12); debido a que este desface corresponde a la pestaña de los botones de cerrar, minimizar y maximizar. También he colocado tu JFrame en 0,0 para que no haya desface en el eje x. Amigo cuidate, sino resuelves tu problema por favor hazlo saber para ver de qué otra forma poder ayudarte. Saludos cordiales.