试图绘制错误
问题描述:
多个多边形结果继我以前的帖子here,我改变了代码:试图绘制错误
PolygonnerJframe.java现在
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
*
* @author X2
*
*/
public class PolygonnerJframe
{
public static void main (String[] args)
{
JFrame frame = new JFrame("Draw polygons");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new DrawingPanel());
frame.pack();
frame.setVisible(true);
}
}
,这段代码的结果:
我不明白是什么原因造成的。
,我所做的改变是:当我们用一个多边形完成的,它的坐标保存在Polygon
类的ArrayList中,每个我创建一个新的多边形的时候,我把 以前的多边形和绘制它们,同时绘制一个新的多边形。
正如你在上面看到的,绘图出了问题,我似乎无法找到 的问题。
我很感激任何帮助。
感谢
编辑:
考虑什么@StanislavL说后,我搬到者行mouseClicked()
,但这次我每一个新的多边形,而不创建时间得到一个新的屏幕“旧”多边形。
只是一个新的多边形......不旧的
答
在每个public void paintComponent(Graphics g)
通话 您创建一个新的多边形添加将其添加到列表中的多边形。
Polygon poly = new Polygon(this.edges);
// add the polygon to the polygons array
this.polygons.add(poly);
猜测应该只发生一个例如在mouseClicked()
处理
答
@Stas代码适用于我没有任何add_ons(在IDE中添加了基本的东西),你的意思最终结果可能是?
。
编辑
。
肮脏的黑客是禁用super.paintComponent方法(G);,但适当的方式应该只是
的所有对象添加到阵列中(见@ trashgod很清楚评论)
创建BurreferImage作为背景图像(在鼠标Double_Click后)
输出禁用超级。的paintComponent(克);
您没有发布最重要的零件 - 绘图代码。顺便说一句:为什么你不能使用标准的Polygon类?您可以从这里获取http://java-sl.com/shapes.html中绘制常规多边形的源代码。 – StanislavL 2013-03-27 10:52:12
@StanislavL:当然,我在第一个文件('PolygonnerJframe.java' )下,在private void draw(Graphics g,Point p1,Point p2)'的函数下。这是HW,因此我不能使用Polygon类:) – ron 2013-03-27 10:53:43