Try band printing, It's a technique where you first
print one line then go on to the next, part of the
Java 2D, look into its' API, it's quite easy, not that
fast, a bit tricky. Every line you print can just be
that long or it will go into oblivion. You have to
break it yourself. I don't like LineBreakMesurer
though, break the lines yourself, but you could try
LineBreakMeasurer.
Tell me if you want more on this; I have created a
tiny word processor at my university and this is the
teqhnique I found to be the best one to adapt. You
could of course jut print out every JComponent, but
that's gonna get jagged and look strange and not so
professional in my opinion. So "band printing" is the
thing, I believe. Just remember to line break and it
will come out beautifully.