2009-10-06 2 views
0

Как сделать копию многоугольника с помощью щелчка мыши (например, при щелчке мышью, меню появляется, показывая меню для копирования).Как скопировать многоугольник с помощью мыши?

У меня есть проблема, чтобы различать щелчок мышью, рисовать или копировать. Я создал метод , где, когда пользователь нажал кнопку мыши, метод проверяет, нажата ли мышь внутри существующего полигона или снаружи. Если он находится за пределами полигона, он будет рисовать новый многоугольник. Если он вне его, он переместит многоугольник. Как я могу копировать многоугольник?

..... 
public void mousePressed(MouseEvent e) {      
    startDrag = new Point(e.getX(), e.getY()); 
    endDrag = startDrag; 
    repaint();     
    for(Polygon p:triangles){      
    if(p.contains(startDrag)){ // if inside polygon triangle, mark the triangle 
    selectedTriangle = p; 
    break; 
    } 
    } 
} 

.... 

public void mouseClicked(MouseEvent e) { 
    startDrag = new Point(e.getX(), e.getY()); 
    Polygon[] triArray = triangles.toArray(new Polygon[triangles.size()]); 
    if (e.getClickCount() ==2) { 
     for (Polygon p:triArray){ 
    if (p.contains(startDrag)) {//Polygon has a 'contains(Point)' 
     triangles.remove (p); 
      break; 
    } 
    } 
} 
+0

Но откуда вы знаете, какой треугольник вы хотите скопировать. Я вижу, вы используете массив. Таким образом, у вас будет больше треугольников. –

ответ

0

Вы можете получить нажатой кнопку мыши от события мыши. Такие, как

int button = e.getButton(); 
    if(button==MouseEvent.BUTTON1){ 

    }else if(button == MouseEvent.BUTTON3){ 

    } 

См. javadoc для MouseEvent для получения дополнительной информации.

+0

Лучшим способом сделать это независимым от платформы способом является использование MouseEvent.isPopupTrigger(). – I82Much

+0

Спасибо, я решил проблему с помощью JPopupMenu ... спасибо большое. – Jessy