Komponenten und Container drucken
Bisher haben wir mit getGraphics() einen Kontext bekommen und selbstständig die Elemente gezeichnet. Doch was machen wir, wenn Standardkomponenten wie Schaltflächen oder Textfelder gedruckt werden sollen?
Komponenten drucken
Für diese Aufgabe bietet jede Komponente über die Oberklasse Component entweder print() oder printAll() an.
abstract class java.awt.Component implements ImageObserver, MenuContainer, Serializable
- void print( Graphics g )
Druckt alle Komponenten. Die Unterklassen überschreiben diese Methode. - void printAll( Graphics g )
Druckt alle Komponenten und Unterkomponenten. Die Unterklassen überschreiben diese Methode. Diese Methoden werden auf dem Graphics-Objekt des Druckers aufgerufen.
Drucken von Containern
Da Container ihre Kinder selbstständig verwalten, gibt es auch hier eine Druckfunktion. Sie heißt printComponents() und druckt alle Komponenten im Container, kann jedoch nur das ausgeben, was tatsächlich sichtbar ist.
Falls wir ein Fenster mit allen Elementen zu Papier bringen wollen, schreiben wir:
Toolkit tk = Toolkit.getDefaultToolkit();
PrintJob pj = tk.getPrintJob( new Frame(), "", null );
if ( pj != null ) {
Graphics g = pj.getGraphics();
f.printComponents( g );
g.dispose();
pj.end();
}