2012-05-30 10 views
5

// Sto cercando di imparare come disegnare oggetti in java. Sto migliorando, ma una volta ottenuta un'immagine sullo schermo ho difficoltà a manipolarlo. I numeri che ho inserito non hanno senso a come le forme si stanno rivelando. Almeno per me non lo fanno. In algebra se si aumenta un numero sull'asse x si va a destra e se si aumenta un numero sull'asse y, esso aumenta. Non è quello che sta succedendo qui. Qualcuno può spiegarmi come funziona? Sono ancora nuovo di Java, quindi più spiegazione e dettagli sono i migliori. Sto cercando di dedicare un paio d'ore al giorno durante la mia estate per imparare java ea volte diventa un po 'frustrante. Qualsiasi aiuto è molto apprezzato.Utilizzo del piano delle coordinate in JFrame

+3

In Java, (0,0) si trova nell'angolo in alto a sinistra. – Jeffrey

+3

Questo [collegamento] (http://docs.oracle.com/javase/1.4.2/docs/guide/2d/spec/j2d-intro.html#wp61857) potrebbe essere d'aiuto. – bacchus

+3

Questo [esempio] (http://stackoverflow.com/a/9373195/230513) tratta della trasformazione tra coordinate cartesiane e schermo. – trashgod

risposta

6

Qui il Co-ordinates partenza dalla TOP LEFT SIDE dello schermo, come come si aumenta il valore di X, si sposta verso RIGHT SIDE, anche se, come si aumenta il valore di Y, si sposterà DOWNWARDS. Ecco un piccolo programma di esempio per comprenderlo un po 'meglio, basta cliccare su di esso ovunque.

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, bello. È grandioso –

+0

@MartinMarino: Grazie e TENERE SORRIDENTE :-) –

+0

Il codice dice che non riesce a trovare la classe di simboli DrawingBase. Gli errori sono canvas "DrawingBase" privato; canvas = new "DrawingBase"(); Le virgolette devono mostrare da dove proviene l'errore effettivo. Apprezzo l'aiuto, ma non ho idea di come risolvere questo problema. Potrei avere un po 'più di aiuto? –