2009-04-15 11 views

Antwort

21

Hier ist ein Beispiel jede Swing-Komponente zu drucken.

Dieser druckt den Inhalt der Componentcomponenet_name genannt. Stellen Sie sicher, dass es für diese Methode sichtbar ist.

public void printComponenet(){ 

    PrinterJob pj = PrinterJob.getPrinterJob(); 
    pj.setJobName(" Print Component "); 

    pj.setPrintable (new Printable() {  
    public int print(Graphics pg, PageFormat pf, int pageNum){ 
     if (pageNum > 0){ 
     return Printable.NO_SUCH_PAGE; 
     } 

     Graphics2D g2 = (Graphics2D) pg; 
     g2.translate(pf.getImageableX(), pf.getImageableY()); 
     componenet_name.paint(g2); 
     return Printable.PAGE_EXISTS; 
    } 
    }); 
    if (pj.printDialog() == false) 
    return; 

    try { 
     pj.print(); 
    } catch (PrinterException ex) { 
     // handle exception 
    } 
} 
+2

Wie können Sie die Komponente entsprechend auf der Seite skalieren, so dass sie passt? –

+1

@Saher hast du jemals herausgefunden, wie das geht? Danke –

+0

könnten Sie bitte mehr Erklärung (Text) hinzufügen? Soll man eine JComponent ableiten und diese Methode hinzufügen oder was soll man damit machen? Vielen Dank. –

4

Ein einfacher Weg, es zu tun, würde die Printable Schnittstelle implementieren (in java.awt.print) und das Hinzufügen der angegebenen print Methode (funktioniert es ähnlich wie paint -in hier können Sie festlegen, welche Komponenten Sie auf der gedruckten Seite ziehen möchte). Und wenn Sie möchten, um tatsächlich den Inhalt der Platte drucken, erhält eine PrinterJob Instanz und ruft seine setPrintable Methode, vorbei an das Objekt, das Printable umgesetzt.

Das ist nur ein kurzer Überblick, though. Ich würde empfehlen, einen Blick auf Sun's tutorial on printing für weitere Informationen zu werfen.

0

einfach bearbeiten und den Namen Ihres Rahmens, Panel (jPanel1) und Schaltfläche (drucken). ‚this‘ bezieht sich auf die JFrame Klasse (das heißt meine Klasse javax.swing.JFrame erstreckt) nur den Rahmen des Bezugs setzen statt ‚this‘.

private void PritnActionPerformed(java.awt.event.ActionEvent evt) { 
    // TODO add your handling code here: 
    Toolkit tkp = jPanel1.getToolkit(); 
    PrintJob pjp = tkp.getPrintJob(this, null, null); 
    Graphics g = pjp.getGraphics(); 
    jPanel1.print(g); 
    g.dispose(); 
    pjp.end(); 
} 
Verwandte Themen