static void drawArrowHead(Graphics2D g, int x1, int y1, int x2, int y2) { if (y2 == y1 && x2 == x1) ret; new Polygon arrowHead; arrowHead.addPoint(0, 5); arrowHead.addPoint(-5, -5); arrowHead.addPoint(5, -5); new AffineTransform tx; double angle = Math.atan2(y2-y1, x2-x1); tx.translate(x2, y2); tx.rotate(angle-Math.PI/2d); Transform old = g.getTransform(); g.setTransform(tx); g.fill(arrowHead); g.setTransform(old); }