2009-10-06 3 views
0

Как скопировать многоугольник в новое место. Я использую e.isPopupTrigger(), чтобы выбрать полигон, но я не знаю, как его скопировать. Является ли функция копирования аналогичной функции перевода? , например. polygon.translate (х, у)?Скопируйте многоугольник в новое место

Спасибо.

Редакция:

// этот код не работает :-(

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

Также '= новый Polygon();' является избыточным с учетом следующей строки. Перед клонированием оригинала нет необходимости создавать новый многоугольник. –

+0

Я попытался изменить код, но я продолжаю получать эту ошибку: метод clone() в объекте типа не отображается. – Jessy

+0

Ах, моя ошибка, Polygon на самом деле не клонируется. Это дает вам эту ошибку, поскольку клон является защищенным членом объекта и не переопределяется некоторой функцией в Polygon. В этом случае пойдите с моим первым предложением, которое должно создать новый многоугольник с теми же точками, что и старый. –

Смежные вопросы