// 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
risposta
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);
}
}
Oh, bello. È grandioso –
@MartinMarino: Grazie e TENERE SORRIDENTE :-) –
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? –
In Java, (0,0) si trova nell'angolo in alto a sinistra. – Jeffrey
Questo [collegamento] (http://docs.oracle.com/javase/1.4.2/docs/guide/2d/spec/j2d-intro.html#wp61857) potrebbe essere d'aiuto. – bacchus
Questo [esempio] (http://stackoverflow.com/a/9373195/230513) tratta della trasformazione tra coordinate cartesiane e schermo. – trashgod