2009-10-06 9 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의 사본을하지 않기 때문에 0

귀하의 코드가 작동하지 않는, 그냥 같은 객체에 copyPolygon 점을합니다. 따라서 원래의 것과 동일한 새로운 폴리곤을 만들어야합니다. 이것은 제 제안의 첫 번째 행에서와 같습니다.

+0

또한 '= 새 다각형();' 다음 줄이 주어지면 중복됩니다. 원본을 복제하기 전에 새 다각형을 만들 필요가 없습니다. –

+0

코드를 변경하려고했지만이 오류가 계속 발생합니다. 형식 개체의 clone() 메서드가 표시되지 않습니다. – Jessy

+0

아, 내 실수는 다각형이 실제로 복제 가능하지 않습니다. 복제본은 객체의 보호 된 멤버이므로 Polygon의 일부 함수에 의해 재정의되지 않으므로이 오류가 발생합니다. 이 경우 이전 제안과 같은 점으로 새로운 다각형을 만들어야한다는 내 제안을 따르십시오. –

관련 문제