No images! I tried it once, but as far I came it was worthless when you wanted to add rotation, scaling etc.
I have for most sprites used GeneralPath, very handy class which let you basically draw any type of complex shape you want. Other from that I used Ellipse2D when I wanted circles and Rectangle2D when I wanted rectangles.
You maybe just were interested of image rotation, but here is how I did it with my Shape objects. This is the super draw method for ships, bullets and itemboxes that handle rotation and scaling. The spriteArea variable that I updated here is later used for collision detection.
public void draw(Graphics2D g2)
{
AffineTransform transformer = new AffineTransform(); //temp variable for keeping track of the rotation and scaling
transformer.rotate(rotationAngle, getPosition().x, getPosition().y);
transformer.translate(getPosition().x, getPosition().y);
transformer.scale(scale, scale);
transformer.translate(-getPosition().x, -getPosition().y);
spriteArea = new Area(spriteBody);
spriteArea.transform(transformer); //transform like shape
g2.setTransform(transformer);
}
Then for instance, the draw method for the Bullet class
public void draw(Graphics2D g2)
{
super.draw(g2);
g2.setColor(getSpriteColor());
g2.fill(getSpriteBody());
}