Hallo!
Ich bin gerade dabei meine ersten Gehversuche mit dem Drucken unter Java zu machen. Das Drucken von einfachen Strings (einzeilig) und Kästchen ist schon mal geschafft. Momentan bin ich dabei längeren Text drucken zu wollen. Das bedeutet auch Umbrüche drucken usw...
Damit ich den ganzen Senf nicht selbst berechnen muss, dachte ich mir ich bin schlau und verwende eine JTextArea zum drucken von langen Texten. Und zwar in etwa so:
Ich muss also den Text von der TextArea in das BufferedImage zeichnen lassen, da die TextArea immer bei der Koordinate 0,0 zeichnet und mir sonst alles andere übermalen würde. Das BufferedImage kann ich ja dann gemütlich dorthin zeichnen wo ich es brauche.
Mein Problem ist, dass die Schriftqualität des Textes sehr schlecht ist. Alle anderen Texte sind prima und würde ich die TextArea direkt in meinen Graphic-Context pinseln lassen, wäre sie ebenfalls prima. Es muss also irgendwie mit dem BufferedImage zusammen hängen. Ich weiss aber nicht was ich machen kann damit es eine bessere Qualität wird.
Hat jemand einen Tipp für mich?
Gruß,
Martin
Ich bin gerade dabei meine ersten Gehversuche mit dem Drucken unter Java zu machen. Das Drucken von einfachen Strings (einzeilig) und Kästchen ist schon mal geschafft. Momentan bin ich dabei längeren Text drucken zu wollen. Das bedeutet auch Umbrüche drucken usw...
Damit ich den ganzen Senf nicht selbst berechnen muss, dachte ich mir ich bin schlau und verwende eine JTextArea zum drucken von langen Texten. Und zwar in etwa so:
Code:
// erst andere einfache Dinge drucken (einzeilige Strnigs, Kästchen usw)
int yPositionOfLargeText = ...; // Berechnung der Position, an der der lange Text abgedruckt werden soll
// langen Text drucken
JTextArea areaToPrint = new JTextArea();
areaToPrint.setOpaque(true);
areaToPrint.setFont(g.getFont());
areaToPrint.setWrapStyleWord(true);
areaToPrint.setLineWrap(true);
areaToPrint.setText(beschreibung); // langen Text setzen
areaToPrint.setDoubleBuffered(false);
areaToPrint.setSize(printWidth, 0);
areaToPrint.setSize(printWidth, areaToPrint.getPreferredSize().height); // setzen der optimalen Höhe für die Area
BufferedImage bufferedImage = new BufferedImage(areaToPrint.getWidth(), areaToPrint.getHeight(),
BufferedImage.TYPE_INT_RGB);
areaToPrint.paint(bufferedImage.getGraphics());
g2d.drawImage(bufferedImage, 0, yPositionOfLargeText, areaToPrint);
g2d.dispose();
Ich muss also den Text von der TextArea in das BufferedImage zeichnen lassen, da die TextArea immer bei der Koordinate 0,0 zeichnet und mir sonst alles andere übermalen würde. Das BufferedImage kann ich ja dann gemütlich dorthin zeichnen wo ich es brauche.
Mein Problem ist, dass die Schriftqualität des Textes sehr schlecht ist. Alle anderen Texte sind prima und würde ich die TextArea direkt in meinen Graphic-Context pinseln lassen, wäre sie ebenfalls prima. Es muss also irgendwie mit dem BufferedImage zusammen hängen. Ich weiss aber nicht was ich machen kann damit es eine bessere Qualität wird.
Hat jemand einen Tipp für mich?
Gruß,
Martin