2012-05-30 260 views
5

// Estoy tratando de aprender a dibujar objetos en Java. Me estoy volviendo mejor, pero una vez que obtengo una imagen en la pantalla, tengo problemas para manipularla. Los números que pongo no tienen sentido de cómo están saliendo las formas. Al menos para mí no. En álgebra, si aumentas un número en el eje x, va hacia la derecha y si aumentas un número en el eje y, sube. Eso no es lo que está pasando aquí. ¿Alguien puede explicarme cómo funciona esto? Todavía soy nuevo en Java, así que cuanta más explicación y detalles, mejor. Intento tomarme un par de horas al día durante mi verano para aprender java y algunas veces se vuelve un poco frustrante. Cualquier ayuda es muy apreciada.Usando el plano de coordenadas en el JFrame

+3

En Java, (0,0) está en la esquina superior izquierda. – Jeffrey

+3

Este [enlace] (http://docs.oracle.com/javase/1.4.2/docs/guide/2d/spec/j2d-intro.html#wp61857) podría ayudar. – bacchus

+3

Este [ejemplo] (http://stackoverflow.com/a/9373195/230513) describe la transformación entre coordenadas cartesianas y de pantalla. – trashgod

Respuesta

6

Aquí el Co-ordinates inicio de la TOP LEFT SIDE de la pantalla, ya que a medida que aumenta el valor de X, se moverá hacia RIGHT SIDE, aunque a medida que aumenta el valor de Y, pasará DOWNWARDS. Aquí hay un pequeño ejemplo de Programa para que entiendas esto un poco mejor, simplemente haz clic en él en cualquier lugar.

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class DrawingExample 
{ 
    private int x; 
    private int y; 
    private String text; 
    private DrawingBase canvas; 

    private void displayGUI() 
    { 
     JFrame frame = new JFrame("Drawing Example"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     canvas = new DrawingBase(); 
     canvas.addMouseListener(new MouseAdapter() 
     { 
      public void mouseClicked(MouseEvent me) 
      { 
       text = "X : " + me.getX() + " Y : " + me.getY(); 
       x = me.getX(); 
       y = me.getY(); 
       canvas.setValues(text, x, y); 
      } 
     }); 

     frame.setContentPane(canvas); 
     frame.pack(); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String... args) 
    { 
     SwingUtilities.invokeLater(new Runnable() 
     { 
      public void run() 
      { 
       new DrawingExample().displayGUI(); 
      } 
     }); 
    } 
} 

class DrawingBase extends JPanel 
{ 
    private String clickedAt = ""; 
    private int x = 0; 
    private int y = 0; 

    public void setValues(String text, int x, int y) 
    { 
     clickedAt = text; 
     this.x = x; 
     this.y = y; 
     repaint(); 
    } 

    public Dimension getPreferredSize() 
    { 
     return (new Dimension(500, 400)); 
    } 

    public void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 
     g.drawString(clickedAt, x, y); 
    } 
} 
+0

Oh genial. Esto es genial. –

+0

@MartinMarino: Gracias y MANTENGASE SONRIENDO :-) –

+0

El código indica que no puede encontrar la clase de símbolo DrawingBase. Los errores son lienzo privado "DrawingBase"; canvas = new "DrawingBase"(); Las comillas son para mostrar de dónde proviene el error real. Agradezco la ayuda, pero no tengo idea de cómo solucionar esto. ¿Podría obtener un poco más de ayuda? –

Cuestiones relacionadas