2009-10-06 76 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