Try overriding JGoLink.stretchPoints:

protected boolean stretchPoints(int startIndex, int nFx, int nFy, int endIndex, int nTx, int nTy) {

Point a = getPoint(startIndex);

Point b = getPoint(endIndex);

if (a.x == nFx && a.y == nFy && b.x == nTx && b.y == nTy) return true;

double Ax = a.x;

double Ay = a.y;

double Bx = b.x;

double By = b.y;

double L = ((Bx-Ax) * (Bx-Ax) + (By-Ay) * (By-Ay));

double Cx = nFx;

double Cy = nFy;

double Dx = nTx;

double Dy = nTy;

double M = 0;

double m2 = 1;

if (Dx-Cx != 0)

M = (Dy-Cy)/(Dx-Cx);

else

M = 9.9e9;

if (M != 0)

m2 = Math.sqrt(1+(1/(M*M)));*

setPoint(startIndex, nFx, nFy);

for (int i = startIndex+1; i < endIndex; i++) {

Point p = getPoint(i);

double Px = p.x;

double Py = p.y;

double Q = 0.5;

if (L != 0)

Q = ((Ax-Px) * (Ax-Bx) + (Ay-Py) * (Ay-By)) / L;

// find point on old line

double Vx = Ax + Q * (Bx-Ax);

double Vy = Ay + Q * (By-Ay);

// distance from P to point V, on old line

double dV = Math.sqrt((Px-Vx)(Px-Vx) + (Py-Vy)*(Py-Vy));*

if (Py < M(Px-Vx) + Vy)

dV = -dV;

if (M > 0)

dV = -dV;

// find point on new line

double Wx = Cx + Q * (Dx-Cx);

double Wy = Cy + Q * (Dy-Cy);

if (M != 0) {

// compute new point for P off of new line, distance dV from W

double x = Wx + dV/m2;

double y = Wy - (x-Wx)/M;

setPoint(i, (int)Math.rint(x), (int)Math.rint(y));

} else {

setPoint(i, (int)Math.rint(Wx), (int)Math.rint(Wy+dV));

}

}

setPoint(endIndex, nTx, nTy);

return true;

}