我正在尝试创建一个可以徒手绘图的程序。 我创建了一个点数组,它保存了鼠标的当前点。 问题是当我释放鼠标然后在另一个位置再次按下它时,它会在释放点和按下点之间绘制一条线。 我应该添加或更改什么?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Mouse extends JPanel implements MouseListener, MouseMotionListener {
private int index = 0;
private Point[] arr = new Point[100000];
public Mouse(String name) {
super();
index = 0;
this.addMouseListener(this);
this.addMouseMotionListener(this);
JFrame fr = new JFrame(name);
fr.add(this);
fr.setSize(500, 500);
setBackground(Color.green);
fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fr.setVisible(true);
}
public void paintComponent(Graphics g) {
super.paintComponents(g);
for (int i = 0; i < index - 1; i++)
g.drawLine(arr[i].x, arr[i].y, arr[i + 1].x, arr[i + 1].y);
}
public void mouseDragged(MouseEvent e) {
arr[index] = new Point(e.getX(), e.getY());
index++;
System.out.println(index);
repaint();
}
public void mousePressed(MouseEvent e) {
arr[index] = new Point(e.getX(), e.getY());
index++;
System.out.println(index);
repaint();
}
public void mouseExited(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseMoved(MouseEvent e) {}
public static void main(String[] args) {
Mouse mouse = new Mouse("Mouse");
}
}
最佳答案
像这样实现 mouseReleased 方法:
public void mouseReleased(MouseEvent e)
{
arr = new Point[100000];
index = 0;
}
这将使其按照您的预期工作。
关于java - 徒手画Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20177596/