Avatar billede changelevel Nybegynder
16. juni 2012 - 00:03

Printable-hjælp

kære eksperten,

Jeg vil gerne print JtextArea ud til min kvitteringsprinter som har størrelse på 8cm. Men jeg kan desværre ikke få det til virke, derfor håber jeg at der er nogle her som kan hjælpe?

jeg har fået et stump kode fra Arne, Den viker fint nok, men den printer desværre kun en del af teksten ud(bredden). f.eks testing, printer den kun "stin" (mangler te og g.)
jeg har prøvet ændre i g2.translate(page.getImageableX(), page.getImageableY()); men sværre hjalp det ikke rigtig noget.




public class PrintTextField extends JFrame {

    private JTextField tf;

    public PrintTextField() {

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setTitle("Text field print");
        getContentPane().setLayout(new BorderLayout());
        tf = new JTextField(30);
        tf.setForeground(Color.RED);
        tf.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 22));
        getContentPane().add(tf, BorderLayout.CENTER);
        JButton btn = new JButton("Print");
        btn.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent ev) {
                PrinterJob job = PrinterJob.getPrinterJob();
                Book bk = new Book();
                bk.append(new Printable() {

                    public int print(Graphics g, PageFormat page, int index) {
                        Graphics2D g2 = (Graphics2D) g;
                        g2.translate(page.getImageableX(), page.getImageableY());

                        tf.paint(g2);

                        return Printable.PAGE_EXISTS;
                    }
                }, job.defaultPage());
                job.setPageable(bk);
                if (job.printDialog()) {
                    try {
                        job.print();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        getContentPane().add(btn, BorderLayout.SOUTH);
        pack();
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                JFrame f = new PrintTextField();
                f.setVisible(true);
                f.setBounds(150, 150, 250, 150);
            }
        });
    }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester