2009-10-06 7 views
0

Comment copier un polygone dans un nouvel emplacement. J'utilise e.isPopupTrigger() pour sélectionner le polygone, mais je ne sais pas comment le copier. La fonction de copie est-elle similaire à la fonction de traduire? par exemple. polygon.translate (x, y)?Copie d'un polygone dans un nouvel emplacement

Merci.

ÉDITÉE:

// ce travail ne marche pas :-(Code

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

Le problème a été résolu avec ces codes :-)

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

Répondre

1

Vous pouvez construire un nouveau polygone de l'ancien, puis déplacez ce polygone vers un nouvel emplacement

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

Votre code ne fonctionne pas parce que la ligne

copyPolygon = selectedTriangle; 

ne fait pas une copie de selectedTriangle, il est tout simplement le point copyPolygon au même objet. Vous devez donc construire un nouveau polygone identique à l'original, ce que fait la première ligne de ma suggestion.

+0

Aussi '= new Polygon();' est redondant étant donné la ligne suivante. Il n'est pas nécessaire de créer un nouveau polygone avant de cloner l'original. –

+0

J'ai essayé de changer le code mais je reçois toujours cette erreur: La méthode clone() dans l'objet type n'est pas visible. – Jessy

+0

Ah, mon erreur, Polygon n'est pas réellement clonable. Il vous donne cette erreur car clone est un membre protégé de l'objet, et n'est pas surchargé par une fonction dans Polygon. Dans ce cas, allez avec ma première suggestion qui devrait faire un nouveau polygone avec les mêmes points que l'ancien. –