Avatar billede majbom Novice
23. juni 2005 - 09:57 Der er 4 kommentarer og
1 løsning

udskrivning på printer

hey..

jeg sidder her med mit javaprojekt og jeg har et TextArea, som jeg gerne vil have udskrevet indholdet af på en printer. jeg har studeret flere tråde om dette emne, men jeg synes det virker meget uoverskueligt... nogle der kan hjælpe mig med dette lille problem?

på forhånd tak
Avatar billede mikkelbm Nybegynder
24. juni 2005 - 19:13 #1
At udskrive med Java er slet ikke så nemt. Jeg har strikket et lille køreklart eksempel sammen, som du muligvis kan bruge:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;

public class TestPrint extends JFrame
{
    private JButton print = new JButton ("Print");
    private JTextArea text = new JTextArea ();
   
    public TestPrint ()
    {
        setSize (400, 400);
        this.getContentPane().add( new JScrollPane(text), BorderLayout.CENTER);
        this.getContentPane().add( print, BorderLayout.SOUTH);
        print.addActionListener(new ActionListener()
        {
            public void actionPerformed (ActionEvent e)
            {
                print ();
            }
        });
        text.setLineWrap(true);
        text.setWrapStyleWord(true);
    }
   
    private void print ()
    {
        PrintUtility.printComponent (text);
    }
   
    public static void main (String[] arg)
    {
        new TestPrint().setVisible(true);
    }
   

    private static class PrintUtility implements Printable
    {
        private Component componentToBePrinted;

        public static void printComponent(Component c)
        {
            new PrintUtility(c).print();
        }
 
        public PrintUtility(Component componentToBePrinted)
        {
            this.componentToBePrinted = componentToBePrinted;
        }
 
        public void print()
        {
            PrinterJob printJob = PrinterJob.getPrinterJob();
            printJob.setPrintable(this);
            if (printJob.printDialog())
              try
              {
                printJob.print();
            }
            catch(PrinterException pe)
            {
                System.out.println("Error printing: " + pe);
            }
          }

        public int print(Graphics g, PageFormat pageFormat, int pageIndex)
        {
            if (pageIndex > 0)
            {
                return(NO_SUCH_PAGE);
            }
            else
            {
                Graphics2D g2d = (Graphics2D)g;
                g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
                disableDoubleBuffering(componentToBePrinted);
                componentToBePrinted.paint(g2d);
                enableDoubleBuffering(componentToBePrinted);
                return(PAGE_EXISTS);
            }
        }

        public static void disableDoubleBuffering(Component c)
        {
            RepaintManager currentManager = RepaintManager.currentManager(c);
            currentManager.setDoubleBufferingEnabled(false);
        }

        public static void enableDoubleBuffering(Component c)
        {
            RepaintManager currentManager = RepaintManager.currentManager(c);
            currentManager.setDoubleBufferingEnabled(true);
        }
    }
}
Avatar billede majbom Novice
24. juni 2005 - 20:24 #2
det var da utroligt at det skal være så omstændigt... nå, men jeg vil da prøve det af på mandag når jeg kommer på arbejde igen, foreløbig tak for svaret ;)
Avatar billede mikkelbm Nybegynder
25. juni 2005 - 01:27 #3
Den private klasse kan du jo lægge ud i en public, så den kan genbruges.
Avatar billede mikkelbm Nybegynder
29. juni 2005 - 21:44 #4
Kommet videre?
Avatar billede majbom Novice
30. juni 2005 - 08:22 #5
ja, jeg har fået en fil af en ven, der står sikkert det samme som det du har skrevet, så du får da lige en 50'er :) tak for hjælpen
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