public void shear(double shx,double shy,Point2D from){
  inverse=null;
  AffineTransform at=AffineTransform.getTranslateInstance(from.getX(),from.getY());
  at.shear(shx,shy);
  at.translate(-from.getX(),-from.getY());
  transform.preConcatenate(at);
  fireStateChanged();
}

public void shear ( double shx , double shy , Point2D from ) { inverse = null ; AffineTransform at = AffineTransform . getTranslateInstance ( from . getX ( ) , from . getY ( ) ) ; at . shear ( shx , shy ) ; at . translate ( - from . getX ( ) , - from . getY ( ) ) ; transform . preConcatenate ( at ) ; fireStateChanged ( ) ; }
shears the transform by passed parameters
