gpt4 book ai didi

java - 在不丢失以前内容的情况下,在 JAVA 中重绘小程序

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

是否可以在不丢失其先前内容的情况下重新绘制小程序?我只是想制作一个程序,允许用户使用鼠标绘制线条、矩形等。我使用了重绘方法,但它不会保留之前绘制的线条/矩形等。

这是片段:

public void mousePressed(MouseEvent e){x1=e.getX();y1=e.getY();}
public void mouseDragged(MouseEvent e)
{
x2=e.getX();
y2=e.getY();
repaint();
showStatus("Start Point: "+x1+", "+y1+" End Point: "+x2+", "+y2);
}
public void paint(Graphics g)
{
//g.drawLine(x1,y1,x2,y2);
g.drawRect(x1, y1, x2-x1, y2-y1);

}

最佳答案

两种可能的解决方案:

  1. 使用通过 getGraphics() 从中获得的 Graphics 对象绘制到 BufferedImage ,然后在 JPanel 的 paintComponent(Graphics g) 中绘制 BufferedImage方法。或者
  2. 创建 ArrayList<Point>将你的鼠标点到List中,然后在JPanel的paintComponent(Graphics g)中方法,使用 for 循环遍历列表,绘制所有点,有时甚至更好 - 连接连续点的线。

其他重要建议:

  • 确保您使用的是 Swing 库(JApplet、JPanel),而不是 AWT(Applet、Panel、Canvas)。
  • 如果可能的话,最好避免使用 applet。
  • 不要在 paint 方法中绘制,而是在 JPanel 的 paintComponent(Graphics g) 中绘制方法。
  • 不要忘记在 paintComponent(Graphics g) 中首先调用 super 的方法方法覆盖。

关于java - 在不丢失以前内容的情况下,在 JAVA 中重绘小程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23902382/

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