尝试绘制多个多边形会导致错误

时间:2013-03-27 10:47:59

标签: java swing jframe awt

按照我之前的帖子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);
 }
}

现在,此代码会生成:this

我无法理解是什么导致这种情况。

我所做的改变是:当我们完成一个多边形时,它的坐标保存在类Polygon的arrayList中,每次我创建一个新的多边形时,我都会 绘制新多边形时,先前的多边形并绘制它们。

正如您在上面所看到的,绘图出了问题,我似乎无法找到 问题。

我很感激任何帮助。

由于

编辑:

在考虑了@StanislavL所说的内容之后,我将这些行移到了mouseClicked(),但这次我每次创建一个没有“旧”多边形的新多边形时都会得到一个新的屏幕。

只是一个新的多边形......没有旧多边形

enter image description here

2 个答案:

答案 0 :(得分:2)

每次public void paintComponent(Graphics g)来电 您创建一个新的多边形添加将其添加到多边形列表。

        Polygon poly = new Polygon(this.edges);

        // add the polygon to the polygons array 
        this.polygons.add(poly);

猜猜应该只发生一次,例如在mouseClicked()处理

答案 1 :(得分:2)

@Stas代码适用于任何add_ons(在IDE中添加基本内容),你的意思是最终结果可能是???

enter image description here

修改

脏黑客是禁用super.paintComponent(g);,但正确的方法应该只是

  • 将所有对象添加到数组中(请参阅@ trashgod的非常清晰的注释)

  • 创建一个BurreferImage作为Backgroung图像(在鼠标Double_Click之后)

通过禁用super.paintComponent(g);

输出

enter image description here