2009-10-06 46 views
0

如何将多边形复制到新位置。我使用e.isPopupTrigger()来选择多边形,但我不知道如何复制它。复制功能类似于翻译功能吗? 例如polygon.translate(X,Y)?将多边形复制到新位置

谢谢。

编辑:

//这个代码不工作:-(

if(e.getSource() == Copy){ 
    Polygon copyPolygon = new Polygon(); 
    copyPolygon = selectedTriangle; 
    copyPolygon.translate(2, 2); 
    repaint(); 
} 

的问题已经解决了这些代码:-)

if(e.getSource() == Copy){  
    Polygon copyPolygon = new Polygon(selectedTriangle.xpoints,selectedTriangle.ypoints,selectedTriangle.npoints); 
    copyPolygon.translate(10,10); 
    triangles.add(copyPolygon); 
    repaint(); 
}   

回答

1

你可以建立一个新的多边形从旧的,然后将该多边形移动到新位置

Polygon newPolygon = new Polygon(oldPolygon.xpoints, oldPolygon.ypoints, oldPolygon.npoints); 
newPolygon.translate(newXPos, newYPos); 

您的代码不起作用,因为该行

copyPolygon = selectedTriangle; 

不作selectedTriangle的副本,它只是使copyPolygon指向同一个对象。因此,您需要构建与原始图像相同的新多边形,这是我建议中的第一行。

+0

另外'= new Polygon();'下一行是多余的。在克隆原始文件之前,不需要创建新的多边形。 – 2009-10-06 20:23:45

+0

我试图改变代码,但我不断收到此错误:类型对象中的方法clone()不可见。 – Jessy 2009-10-06 20:24:59

+0

啊,我的错误,Polygon实际上并不是可复制的。它给了你这个错误,因为clone是对象的一个​​受保护的成员,并没有被Polygon中的某个函数覆盖。在这种情况下,请按照我的第一个建议,这个建议应该创建一个与旧建筑相同点的新多边形。 – 2009-10-06 20:33:37