gpt4 book ai didi

java - 单击新位置时如何阻止形状消失?

转载 作者:行者123 更新时间:2023-12-01 10:52:03 25 4
gpt4 key购买 nike

我编写了这段代码,单击鼠标即可显示形状,但我遇到了问题。当我单击新位置时,形状会消失在前一个位置上。我怎样才能阻止这种情况发生?

头等舱:

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;

public class MouseClick {
private static int x,y;
private static DrawingObjects object = new DrawingObjects();

public static void main(String[] args){

JFrame frame = new JFrame("MouseClick");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.add(object);
object.addMouseListener(new AL());
}
static class AL extends MouseAdapter{
public void mouseClicked (MouseEvent e){
x = e.getX();
y = e.getY();
object.drawing(x, y);
}
}
}

第二类:

import javax.swing.*;
import java.awt.*;

public class DrawingObjects extends JPanel{
private static int x,y;

public void drawing(int xx, int yy){
x = xx;
y = yy;
repaint();
}

public void paintComponent(Graphics g){
super.paintComponent(g);
g.fillRect(x, y, 20, 20);
}
}

最佳答案

处理此问题的最佳方法是跟踪已单击的每个点,并在 paintComponent 中重绘每个点。 .

所以改变private static int x, yprivate List<Point> points = new ArrayList<>() ,然后添加到其中:

public void drawing(int x, int y){
points.add(new Point(x, y));
repaint();
}

然后在重画时遍历每个点:

public void paintComponent(Graphics g){
super.paintComponent(g);
for(Point p : points){
g.fillRect(p.x, p.y, 20, 20);
}
}

关于java - 单击新位置时如何阻止形状消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33813306/

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