我正在尝试使用鼠标侦听器来绘制点,当单击面板时,我正在绘制点,然后,如果我花费了很多,我希望将其相对地保持在面板的同一位置。我试图将x除以getWidth并将y除以getHeight,但它也无法正常工作。
这里是代码的一点高峰,对于帮助者来说是非常重要的:)
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import javax.swing.JPanel;
public class Grid extends JPanel {
private ArrayList<Point> graph;
public Grid() {
this.graph = new ArrayList<Point>();
addMouseListener(new Listener());
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (graph.size() != 0) {
if (graph.size() == 1) {
Point temp = graph.get(0);
g.drawOval(temp.getX(), temp.getY(), 3, 3);
} else {
for (int i = 0; i < graph.size() - 1; i++) {
Point temp = graph.get(i);
Point next = graph.get(i + 1);
g.drawOval(temp.getX(), temp.getY(), 3, 3);
g.drawOval(next.getX(), next.getY(), 3, 3);
g.drawLine(temp.getX(), temp.getY(), next.getX(), next.getY());
}
}
}
}
private class Listener implements MouseListener {
@Override
public void mouseClicked(MouseEvent e) {
graph.add(new Point(e.getX(), e.getY()));
repaint();
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
}
}
[好家伙,我找到了答案,我每次在Point类中使用paintComponent时都记得相对数字,然后将此数字乘以该数字将使我每次都保存正确的关系。