code: public static void drawArrowOffset(Graphics g, Point from, Point to, int offsetFrom, int offsetTo, double weight){
  		double xk1,xk2,s,dx,dy,sinPhi,cosPhi;
  		dx = to.x-from.x;
  		dy = to.y-from.y;
  		xk1=-offsetFrom/2;
  		xk2=-offsetTo/2;
  	    s=Math.sqrt(dy*dy+dx*dx);
  	    sinPhi=dy/s;
  	    cosPhi=dx/s; 		
  		drawArrow(g, from.getX()-xk1*cosPhi, from.getY()-xk1*sinPhi, to.getX()+xk2*cosPhi, to.getY()+xk2*sinPhi, weight);
  	}
docs: Draws an arrow between two given points using the specified weight and offsets.<br>
  The arrow lies on the line between point <code>from</code> to point <code>to</code> and points to point <code>to</code>.
  The distance between point <code>from</code> and the arrow start is defined by <code>offsetFrom</code>,
  respectively for the arrow end, <code>to</code> and <code>offsetTo</code>.
  @param g Graphics context
  @param from Basic arrow starting point
  @param to Basic arrow ending point
  @param offsetFrom Distance between <code>from</code> and arrow starting point
  @param offsetTo Distance between <code>to</code> and arrow ending point
  @param weight Arrow weight