Is it possible to just send a JPanel or any other component to the printer? Or do I have to implement all the drawing to the graphics object by hand?
I have tried to use the Print* functions of the JPanel to print to the graphics object but the page that gets printed is blank.
Check out the Java printing API and tutorial along with JComponent.print(Graphics).
Here is a rudimentary class which will print any component which fits on 1 page (I can't take credit for this, I got the code from Marty Hall's tutorial):