Avatar billede changelevel Nybegynder
18. maj 2012 - 21:41 Der er 12 kommentarer

print funktion

Hej, Nogle her som vide noget om print metode i java?

jeg vil gerne printe noget Jtextfields ud, og jeg ved ikke hvor jeg skal starte hen?

nogle her som kan hjælpe?

rigtig mange tak.
Avatar billede arne_v Ekspert
19. maj 2012 - 02:28 #1
Vil du printe teksten ud eller vil du printe ud som tekst boksen vises?
Avatar billede changelevel Nybegynder
19. maj 2012 - 09:09 #2
Jeg vil gerne print teksten ud :D
Avatar billede arne_v Ekspert
20. maj 2012 - 02:23 #3
Java har et Java Print API.

Og dokumentationen er utrolig kompleks, men koden kan vaere meget simpel.

Demo:

import java.io.ByteArrayInputStream;

import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;

public class PrintText {
    public static void main(String[] args) throws PrintException {
        String text = "Hello world!\r\nLine 2";
        Doc doc = new SimpleDoc(new ByteArrayInputStream(text.getBytes()), DocFlavor.INPUT_STREAM.AUTOSENSE, null);
        PrintService service = PrintServiceLookup.lookupDefaultPrintService();
        DocPrintJob job = service.createPrintJob();
        job.print(doc, null);
    }
}
Avatar billede changelevel Nybegynder
20. maj 2012 - 11:53 #4
er det muligt at justere størrelse på teksten?
måske også i længde og bredden?
Avatar billede changelevel Nybegynder
20. maj 2012 - 12:05 #5
er det muligt at justere størrelse på teksten?
måske også i længde og bredden?
Avatar billede arne_v Ekspert
20. maj 2012 - 15:44 #6
Vil du justere tekstens udseende uafhaengigt af JTextField eller vil du printe dit JTextField (med det layout som det nu har)?
Avatar billede changelevel Nybegynder
20. maj 2012 - 17:42 #7
Tekster som jeg vil printe ud ligger på JTextarea, og den vil selvfølgelig gerne printe ud,. Men Den skal printes på en bonroll(kvittering) størrelse. Teksten på jTextarea er stor. Derfor savner jeg en metode som kan justeres.?
Avatar billede arne_v Ekspert
20. maj 2012 - 22:36 #8
Saa skal du nok til at printe JTextField/JTextArea fremfor teksten.

Demo:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterJob;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

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();
        tf.setForeground(Color.RED);
        tf.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 72));
        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);
            }
        });
    }
}
Avatar billede changelevel Nybegynder
03. juni 2012 - 14:54 #9
Hej, når jeg kører programmet så kommer printe- dialog ud, og spørge hvilken print jeg vil bruge.

Men hvis nu jeg vil ikke have der pop printer dialog ud, og skal printe med et samme ud ? kan man gøre det? (Bonprinter/kvitteringprinter)?
Avatar billede arne_v Ekspert
03. juni 2012 - 15:09 #10
Hvad sker der hvis du undlader at kalde job.printDialog() ?
Avatar billede changelevel Nybegynder
11. juni 2012 - 18:28 #11
Hej arne_v, jeg er ked af det fordi du ikke har fået den point på min tidligere spørglsmål. Jeg må har trykket forkert. jeg skal prøve pointgiver rigtig fremover.

men angående denne her spørgsmål vil jeg gerne spørge om det er muligt at justere teksten størrelse, når man printer teksten ud.

F.eks. på jtextArea har jeg størrelse 24, men når jeg printer det , vil jeg gerne have størrelse ændre til mindre på selve kvitteringen?  er det muligt?

med venlig hilsen
Li
Avatar billede changelevel Nybegynder
11. juni 2012 - 21:16 #12
hhhmmm, og den printer kun første få bogstaver med, og starter med at skrive på midten?
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