private void drawDashedLine(Graphics g, int x1, int y1, int x2, int y2, double dashlength, double spacelength) { if ((x1 == x2) && (y1 == y2)) { g.drawLine(x1, y1, x2, y2); return; } double linelength = Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); double yincrement = (y2 - y1) / (linelength / (dashlength + spacelength)); double xincdashspace = (x2 - x1) / (linelength / (dashlength + spacelength)); double yincdashspace = (y2 - y1) / (linelength / (dashlength + spacelength)); double xincdash = (x2 - x1) / (linelength / (dashlength)); double yincdash = (y2 - y1) / (linelength / (dashlength)); int counter = 0; for (double i = 0; i < linelength - dashlength; i += dashlength + spacelength) { g.drawLine((int) (x1 + xincdashspace * counter), (int) (y1 + yincdashspace * counter), (int) (x1 + xincdashspace * counter + xincdash), (int) (y1 + yincdashspace * counter + yincdash)); counter++; } if ((dashlength + spacelength) * counter <= linelength) { g.drawLine((int) (x1 + xincdashspace * counter), (int) (y1 + yincdashspace * counter), x2, y2); } }