Нарисуйте треугольник с помощью перетаскивания мышью (как я могу переместить предыдущий нарисованный треугольник с помощью перетаскивания мышью)
Как переместить треугольник в новое место с помощью перетаскивания мышью (которое было нарисовано ранее с помощью перетаскивания мышью)?
... java.util.List<Polygon> triangles = new LinkedList<Polygon>(); Point startDrag, endDrag, midPoint; Polygon triangle; ... public PaintSurface() { this.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { startDrag = new Point(e.getX(), e.getY()); endDrag = startDrag; repaint(); }//end mousePressed public void mouseReleased(MouseEvent e) { ... int[] xs = { startDrag.x, endDrag.x, midPoint.x }; int[] ys = { startDrag.y, startDrag.y, midPoint.y }; triangles.add( new Polygon(xs, ys,3)); startDrag = null; endDrag = null; repaint(); }//end mouseReleased ... });//end addMouseListener this.addMouseMotionListener(new MouseMotionAdapter() {
<,/pre>/* I dont know how to move (drag) the whole triangle to new location and later delete the previous drawn triangle. The mouseDragged method only draw a new triangle using mouse drag :-( */
public void mouseDragged(MouseEvent e) { endDrag = new Point(e.getX(), e.getY()); repaint(); }//end mouseDragged }//end paintSurface //Draw triangles public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); //draw the thickness of the line g2.setStroke(new BasicStroke(1)); g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.00f)); g2.setPaint(Color.black);//set the triangle color for (Polygon triangle : triangles) g2.drawPolygon(triangle); if (startDrag != null && endDrag != null) { g2.setPaint(Color.red); g2.drawPolygon(triangle); } }//end paint }//end private class PaintSurface