carookee - group communication for you
Home / JavaForum / Swing + AWT
Infos   |   Features   |   Gold-Edition   |   Kundenservice   
java
  Übersicht
  Forum
Beginner
Java allgemein
JDBC
JNI
Networking
Online-Ressourcen
Swing + AWT
XML
Meckerecke
  Mitglieder
LOGIN





· Passwort vergessen
· Kostenlos anmelden
  Information
  Demo
  Features
  Im Vergleich
  Anmeldung
SUCHE
Beiträge, Foren oder Verfasser finden:
  Kundenservice
  Impressum
  Datenschutz
  AGB
Status
3.903 User online
0 User eingeloggt
 

Beiträge
   Antworten     Neuer Beitrag    

Beitrag 167 von 1460 (11%) |<   <   >   >|

Autor schnuffie
Datum 17.03.04, 09:40
Betreff JPanel drucken


Hallo Leute,

habe mich mal mit Drucken unter Java beschäftigt. Meine kleine Print-Klasse kann Text drucken, jedoch keine grafischen Oberflächen. Wie stelle ich das an?

public class Printer implements Printable {
    
    private JPanel p;
    private PrinterJob pj;
    private PageFormat pf;
    
    //Übergabe des JPanels, dessen Inhalt gedruckt werden soll
    public Printer(JPanel p) {
        this.p = p;
        this.pj = PrinterJob.getPrinterJob();
    }
    
    //Seite einrichten
    public boolean setPage() {
        PageFormat pfDefault = pj.defaultPage();
        this.pf = pj.pageDialog(pfDefault);
        return pf != pfDefault;
    }
    
    //Drucker auswählen
    public boolean setPrinter() {
        return pj.printDialog();
    }
    
    //drucken
    public void print() throws PrinterException {
        Book book = new Book();
        book.append(this, pf);
        pj.setPageable(book);
        pj.print();
    }
    
    //wird automatisch aufgerufen
    public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
        Graphics2D g2 = (Graphics2D)g;
        g2.drawString("Hallo", 50, 50); //funktioniert
        this.p.print(g2); //soll eigentlich den Inhalt des JPanels drucken
        g2.dispose();
        return Printable.PAGE_EXISTS;
    }
    
}


Ohne die Zeile in der das Graphics-Objekt an die Print-Methode des JPanels übergeben wird, wird "Hallo" tatsächlich ausgedruckt. Mit dieser Zeile werden (im Druckdialog ersichtlich) tausende Seiten erzeut, jedoch nichts gedruckt (100% Prozessorlast, doch nichts passiert...)

Was kann ich tun?

P.S.: Auf dem JPanel "MyDialog" werden mittels BorderLayout verschiedene Komponenten dargestellt, die Paint-Methode wird also theoretisch garnicht benutzt. Habe auch mal die Paint-Methode im JPanel "MyDialog" implementiert und irgendwas zeichnen lassen - das Zeichnen klappt, jedoch das Drucken bringt keine Veränderung.

Ich hoffe Ihr könnt mir helfen.

CU schnuffie




Diskussionsverlauf:
JPanel drucken
    Re: JPanel drucken
        Re: JPanel drucken
            Re: JPanel drucken
                Re: JPanel drucken
                    Re: JPanel drucken
                        Re: JPanel drucken
                            Re: JPanel drucken
                            Re: JPanel drucken
                                Re: JPanel drucken
                                    Re: JPanel drucken ---> Die Lösung?
                                        Re: JPanel drucken ---> Leider nein?
                                            Re: JPanel drucken ---> Leider nein?
                                                Re: JPanel drucken ---> Leider nein?
                                                    AW: JPanel drucken ---> Leider nein?
                                                        Re: AW: JPanel drucken
                                                    Re: JPanel drucken ---> Leider nein?

 Auf diesen Beitrag antworten
 Neuen Beitrag verfassen


|<   <   >   >|

                                                                                                                                                                                                                           

Impressum  · Datenschutz  · AGB  · Infos  · Presse
Ein modernes Forum: teamturn.com