gpt4 book ai didi

java - 自由手绘Java

转载 作者:行者123 更新时间:2023-11-30 08:28:28 25 4
gpt4 key购买 nike

我正在尝试创建一个可以徒手绘制的程序。我创建了一个点数组,它保存了鼠标的当前点。问题是当我释放鼠标然后在另一个位置再次按下它时,它会在释放点和按下点之间画线。我应该添加或更改什么?


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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com