
Über das Thema "Drucken in Java" ist nicht sonderlich viel zu finden, schade eigentlich da es alles andere als schwierig ist.
Natürlich sind auch sehr komplexe Anwendungen möglich, da man aber letztendlich auf ein Graphics-Objekt zeichnet, möchte ich hier nur kurz die Ausgabe eines einzeiligen Textes zeigen. Wie das Drucken von Bildern und vom Programm erzeugten Graphiken funktioniert, kann man der Dokumentation der Klasse Graphics entnehmen.
Die benötigten Schritte:
Code java:
1 | PrintJob auftrag = getToolkit().getPrintJob(this, "Mein 1. Ausdruck", null); |
this: ein JFrame wird gesperrt, solange der Dialog angezeigt wird
"Mein 1. Ausdruck": der Titel
null: keine weiteren Attribute werden gesetzt
Code java:
1 | Graphics graphik = auftrag.getGraphics(); |
Code java:
Code java:
1 2 | graphik.dispose();
auftrag.end(); |
Insgesamt kommt dabei so eine Methode heraus (inklusive Vermeidung von NullPointerExceptions):
Code java:
1 2 3 4 5 6 7 8 9 10 11 12 | private void print(String text) {
PrintJob auftrag = getToolkit().getPrintJob(this, "Mein 1. Ausdruck", null);
if(auftrag != null) {
Graphics graphik = auftrag.getGraphics();
if (graphik != null) {
graphik.setFont(new Font("TimesRoman", Font.PLAIN, 24));
graphik.drawString(text, 40, 70);
graphik.dispose();
}
auftrag.end();
}
} |
Als ansprechendes Demo soll ein JFrame mit Textfeld zur einzeiligen Eingabe und ein Button zum starten des Druckvorgangs dienen.
Code java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | import java.awt.Font;
import java.awt.Graphics;
import java.awt.PrintJob;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.UIManager;
public class Printer extends JFrame {
private JTextField textfeld;
private JButton submit;
public Printer() {
super("Printer");
setDefaultCloseOperation(EXIT_ON_CLOSE);
textfeld = new JTextField(35);
textfeld.setFont(new Font("TimesRoman", Font.PLAIN, 24));
add(textfeld, "Center");
submit = new JButton("Print");
submit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
print(textfeld.getText());
}
});
add(submit, "South");
}
private void print(String text) {
PrintJob auftrag = getToolkit().getPrintJob(this, "Mein 1. Ausdruck", null);
if(auftrag != null) {
Graphics graphik = auftrag.getGraphics();
if (graphik != null) {
graphik.setFont(new Font("TimesRoman", Font.PLAIN, 24));
graphik.drawString(text, 40, 70);
graphik.dispose();
}
auftrag.end();
}
}
public static void main(String[] args) {
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception ex){
}
Printer p = new Printer();
p.pack();
p.setLocationRelativeTo(null);
p.setVisible(true);
}
} |
Als wichtige weitere Methoden der Klasse PrintJob wären noch zu nennen:
Code java:
1 | Dimension getPageDimension() |
Code java:
1 | int getPageResolution() |
javaDeveloper2011


Bereiche
Kategorien
Forum - Programming
.
tutorials.de-Systemmitteilung