Cambiare il carattere di stampa e il formato pagina

di il
1 risposte

Cambiare il carattere di stampa e il formato pagina

Ciao
ho un programma scritto in java ma ho dei problemi nella stampa.
quando stampo il programma mi stampa con un font troppo grande, ho provato a decompilare il programma e a modificare il font ma non mi varia la dimensione della stampa. inoltre come default mi imposta la pagina in formato letter mentre io vorrei cambiarla in A4

/* */ import java.awt.Container;
/* */ import java.awt.Font;
/* */ import java.awt.Frame;
/* */ import java.awt.Graphics;
/* */ import java.awt.Graphics2D;
/* */ import java.awt.event.ActionEvent;
/* */ import java.awt.event.ActionListener;
/* */ import java.awt.font.FontRenderContext;
/* */ import java.awt.font.TextLayout;
/* */ import java.awt.print.PageFormat;
/* */ import java.awt.print.Printable;
/* */ import java.awt.print.PrinterException;
/* */ import java.awt.print.PrinterJob;
/* */ import java.util.StringTokenizer;
/* */ import java.util.Vector;
/* */ import javax.swing.Box;
/* */ import javax.swing.JButton;
/* */ import javax.swing.JDialog;
/* */ import javax.swing.JEditorPane;
/* */ import javax.swing.JOptionPane;
/* */ import javax.swing.JPanel;
/* */ import javax.swing.JScrollPane;
/* */
/* */ public class DlgStampa extends JDialog
/* */ implements ActionListener, Printable
/* */ {
/* */ Vector Destinatari;
/* */ JEditorPane testo;
/* */ JButton stampa;
/* */ JButton chiudi;
/* */
/* */ public DlgStampa(Frame owner, Vector dest)
/* */ {
/* 44 */ super(owner, "Stampa di riepilogo", true);
/* 45 */ this.Destinatari = dest;
/* 46 */ init();
/* */ }
/* */
/* */ private void init() {
/* 50 */ this.testo = new JEditorPane();
/* 51 */ JScrollPane scroll = new JScrollPane(this.testo);
/* 52 */ this.stampa = new JButton("Stampa");
/* 53 */ this.chiudi = new JButton("Chiudi");
/* 54 */ setSize(800, 550);
/* 55 */ setResizable(false);
/* */
/* 57 */ Box vertbox = Box.createVerticalBox();
/* 58 */ vertbox.add(scroll);
/* 59 */ JPanel pulsanti = new JPanel();
/* 60 */ pulsanti.add(this.stampa);
/* 61 */ pulsanti.add(this.chiudi);
/* 62 */ vertbox.add(Box.createVerticalStrut(5));
/* 63 */ vertbox.add(pulsanti);
/* */
/* 65 */ getContentPane().add(vertbox);
/* */
/* 67 */ this.stampa.addActionListener(this);
/* 68 */ this.chiudi.addActionListener(this);
/* */
/* 72 */ StringBuffer sb = new StringBuffer(0);
/* 73 */ for (int i = 0; i < this.Destinatari.size(); i++)
/* 74 */ sb.append(((Destinatario)this.Destinatari.elementAt(i)).stampa());
/* 75 */ this.testo.setText(new String(sb));
/* */
/* 77 */ Font font = new Font("Courier", 0, 2);
/* 78 */ this.testo.setFont(font);
/* */ }
/* */
/* */ public void actionPerformed(ActionEvent e) {
/* 82 */ if (e.getSource().equals(this.stampa))
/* */ {
/* 84 */ PrinterJob pj = PrinterJob.getPrinterJob();
/* 85 */ if (pj.printDialog())
/* */ {
/* 87 */ pj.setPrintable(this);
/* */ try
/* */ {
/* 90 */ pj.print();
/* */ }
/* */ catch (PrinterException ex)
/* */ {
/* 94 */ JOptionPane.showMessageDialog(this, "Errore di stampa:\n" +
/* 95 */ ex.getMessage());
/* */ }
/* */ }
/* 98 */ return;
/* */ }
/* 100 */ if (e.getSource().equals(this.chiudi))
/* */ {
/* 102 */ setVisible(false);
/* 103 */ return;
/* */ }
/* */ }
/* */ public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
/* 110 */ Graphics2D g2d = (Graphics2D)graphics;
/* */
/* 115 */ FontRenderContext context = g2d.getFontRenderContext();
/* */
/* 117 */ int dim = 2;
/* */ Font font;
/* */ TextLayout layout;
/* */ do {
/* 119 */ font = new Font("Courier", 0, dim);
/* 120 */ layout = new TextLayout(
/* 121 */ "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
/* 122 */ font, context);
/* 123 */ dim++;
/* 124 */ }while (layout.getAdvance() < pageFormat.getImageableWidth());
/* */
/* 126 */ if (dim-- < 4) {
/* 127 */ JOptionPane.showMessageDialog(this, "Stampa non riuscita.\nControllare il formato della pagina e il dispositivo di stampa!");
/* */
/* 129 */ return 1;
/* */ }
/* */
/* 132 */ float altezzariga = layout.getAscent() + layout.getDescent() + layout.getLeading();
/* 133 */ double numeroRighe = pageFormat.getImageableHeight() / altezzariga;
/* 134 */ g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY() + layout.getAscent());
/* */
/* 136 */ StringTokenizer st = new StringTokenizer(this.testo.getText(), "\n");
/* */
/* 139 */ for (int j = 0; (j < numeroRighe * pageIndex) && (st.countTokens() > 0); j++) {
/* 140 */ st.nextToken();
/* */ }
/* 142 */ if (st.countTokens() == 0) {
/* 143 */ return 1;
/* */ }
/* */
/* 146 */ for (int i = 0; (i < numeroRighe) && (st.countTokens() > 0); i++)
/* */ {
/* 148 */ layout = new TextLayout(st.nextToken(), font, context);
/* 149 */ layout.draw(g2d, 0.0F, altezzariga * i);
/* */ }
/* 151 */ return 0;
/* */ }
/* */ }

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte