Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/08/2015, 14:37
Avatar de GumiCat
GumiCat
 
Fecha de Ingreso: mayo-2014
Ubicación: Argentina
Mensajes: 16
Antigüedad: 10 años, 5 meses
Puntos: 0
Pregunta Dibujando con JPanel

Tengo el siguiente codigo, que basicamente lo que hace es crear un JFrame donde se le coloca un JPanel, donde dibuja las coordenadas del mouse y un circulo.
El codigo:

Código Java:
Ver original
  1. package pruebas;
  2.  
  3. import java.awt.Canvas;
  4. import java.awt.Component;
  5. import java.awt.Graphics;
  6. import java.awt.MouseInfo;
  7. import java.awt.Point;
  8. import java.awt.PointerInfo;
  9.  
  10. import javax.swing.*;
  11.  
  12.  
  13. public class Mouse1 {
  14.  
  15.     public static void main(String[] args)  {
  16.        
  17.         Frame1 frame1 = new Frame1();
  18.        
  19.        
  20.         while(true){
  21.             frame1.canvas1.leer_mouse();
  22.             frame1.canvas1.repaint();
  23.         }
  24.        
  25.     }
  26. }
  27.  
  28.  
  29. @SuppressWarnings("serial")
  30. class Frame1 extends JFrame{
  31.    
  32.     Canvas1 canvas1 = new Canvas1();
  33.    
  34.     public Frame1(){
  35.        
  36.         JFrame a = new JFrame("Ventana");
  37.        
  38.         a.setBounds(100, 100, 250, 200);
  39.         a.setVisible(true);
  40.         a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  41.         a.setResizable(false);
  42.        
  43.         a.add(canvas1);
  44.     }
  45. }
  46.  
  47. @SuppressWarnings("serial")
  48. class Canvas1 extends Canvas{
  49.  
  50.     private int x, y;
  51.    
  52.  
  53.     public void paint(Graphics g){
  54.         //super.paint(g);
  55.        
  56.         g.drawString("Hola mundo", 0, 0);
  57.         g.drawString("X:" + x , 10, 20);
  58.         g.drawString("Y:" + y , 10, 60);
  59.         g.drawOval(x-100, y-100, 12, 12);
  60.        
  61.     }
  62.    
  63.     public void leer_mouse(){
  64.         Point coord_mouse;
  65.         PointerInfo info_mouse;
  66.        
  67.         info_mouse = MouseInfo.getPointerInfo();
  68.         coord_mouse = info_mouse.getLocation();
  69.        
  70.         x = coord_mouse.x;
  71.         y = coord_mouse.y;
  72.        
  73.         System.out.println("x:" + x);
  74.         System.out.println("y:" + y);
  75.        
  76.     }
  77. }

Mi problema está en que el circulo se dibuja en el (0,0) del monitor y no en la ventanita, osea, en el JFrame. Cómo podría hacer para que siga al mouse correctamente?

Acá dejo una imagen descriptiva del problema, no se ve el raton, pero ahí está en el punto (0,0) de la ventana y como ven, el circulo se dibuja defasado


Última edición por GumiCat; 21/08/2015 a las 14:47 Razón: agregar imagen descriptiva del problema