//我正在尝试学习如何在java中绘制对象。我越来越好了,但是一旦我在屏幕上看到图像,我就无法操作它。我输入的数字对形状的变化没有意义。至少在我看来他们没有。在代数中,如果你在x轴上增加一个数字,它会向右移动,如果你在y轴上增加一个数字,它会向上移动。多数民众赞成在这里没有发生什么。任何人都可以向我解释这是如何工作的?我还是java的新手,所以解释和细节越多越好。我想在夏天花一两个小时来学习java,有时候会有点沮丧。非常感谢任何帮助。
答案 0 :(得分:8)
此处Co-ordinates
从屏幕的TOP LEFT SIDE
开始,就像您增加X
的价值一样,您将向RIGHT SIDE
移动,但随着您增加价值在Y
,您将移动DOWNWARDS
。这是一个小例子程序,让您更好地理解这一点,只需在任何地方点击它。
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);
}
}