Drucken von JComponent.

Status
Nicht offen für weitere Antworten.
E

Ein Gast

Gast
Hi,

ich habe folgendes Problem:
Ich habe eine Klasse JComponent die weitere Komponenten enthält. Jetzt möchte ich den Inhalt dieser obersten JComponent Klasse in der ich mit Hilfe der Java 2D API einiges gemalt habe drucken. Ich habe es bereits hinbekommen, daß er mir den sichtbaren Bereich druckt. Ich hätte aber gerne, daß er den gesamten Bereich ausdruckt, also auch das wo ich eigentlich hinscrollen muß. Wie kann ich das machen?

Vielen Dank für die Hilfe,
Robert
 

André Uhres

Top Contributor
Code:
package print;
/*
 * PrintTest.java
 */
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;
import javax.swing.*;
public class PrintTest {
    public static void main(String[] args) {
        PrintFrame prfr = new PrintFrame();
        prfr.setVisible(true);
    }
}

/*
 * PrintFrame
 */
class PrintFrame extends JFrame implements ActionListener{
    private PrintPanel pp;
    public PrintFrame() {
        super("Printing Swing");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        pp = new PrintPanel();
        getContentPane().add(pp);
        JButton btPrint = new JButton("Print...");
        btPrint.addActionListener(this);
        pp.add(btPrint);
        
        add(new JScrollPane(pp));
        setSize(200,120);
        setLocationRelativeTo(null);
    }
    public void actionPerformed(ActionEvent evt){
        String command = evt.getActionCommand();
        if(command.equals("Print...")) {
            PrinterJob printJob = PrinterJob.getPrinterJob();
            PageFormat pageFormat = new PageFormat();
            pageFormat.setOrientation(PageFormat.LANDSCAPE);
            printJob.setPrintable(pp, pageFormat);
            if (printJob.printDialog())
                try {
                    printJob.print();
                } catch(PrinterException pe) {
                    System.out.println("Error printing: " + pe);
                }
        }
    }
}

/*
 * PrintPanel
 */
class PrintPanel extends JPanel implements Printable {
    public PrintPanel() {
        setBackground(Color.white);
        setPreferredSize(new Dimension(300, 200));
    }
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        ((Graphics2D)g).setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        g.setColor(Color.black);
        g.drawRect(20,20,100,50);
        g.fillOval(80,80,60,30);
        g.drawString("Printing Swing is simple",100,150);
        g.setColor(Color.red);
        g.drawRect(0,0,299,199);
    }
    public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
        if (pageIndex > 0) {
            return(NO_SUCH_PAGE);
        } else {
            int x = (int)pageFormat.getImageableX() + 1;
            int y = (int)pageFormat.getImageableY() + 1;
            g.translate(x,y);
            RepaintManager currentManager = RepaintManager.currentManager(this);
            currentManager.setDoubleBufferingEnabled(false);
            paintComponent(g);
            currentManager.setDoubleBufferingEnabled(true);
            return(PAGE_EXISTS);
        }
    }
}
 
E

Ein Gast

Gast
Hi,

vielen Dank für den Code! Der eigentliche Fehler bzw. das eigentliche Problem was ich habe ist wohl ein anderes als ich zunächst vermutete. Das Problem scheint nämlich zu sein, daß das was gedruckt werden soll größer ist als eine Seite, aber er wohl nicht weiß ab wann er eine neue Seite drucken soll. Es wird immer nur eine Seite gedruckt. Auch in deinem Beispiel, wenn ich das Rechteck ein ganzes Stück größer mache. Muß ich selber irgendwie berechnen wann eine neue Seite anfängt und dem Drucker mitteilen oder ist das eine Option oder ...?

Gruß,
Robert
 

André Uhres

Top Contributor
Man müsste in dem Fall wahrscheinlich mit einem "Pageable" arbeiten.
Die Klasse JComponentVista:
http://www.koders.com/java/fidC7F0A7F80DF6779ECA56DD98716C55C8B71E743E.aspx
und die Klasse Vista:
http://www.koders.com/java/fid617B0E059FD2E0ED5F2BE0E4E3BC4B614E22E8FA.aspx
sollen angeblich dabei helfen. "Vista" implementiert "Pageable" und "JComponentVista" ist von Vista abgeleitet.
Man übergibt dem PrinterJob dann kein Printable, sondern ein Pageable:
Code:
printJob.setPageable(new JComponentVista(pp, pageFormat));
Ich muss aber dazu sagen, daß ich mit "Pageable" keinerlei Erfahrung habe und daher nicht unbedingt weiterhelfen kann.
 
E

Ein Gast

Gast
Ok, werd mich mal damit beschäftigen. Besten Dank.

Gruß,
Robert
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Probleme beim Drucken auf einen PDF-Drucker AWT, Swing, JavaFX & SWT 8
I Rich Text drucken AWT, Swing, JavaFX & SWT 0
F JavaFX (Tree)TableView korrekt drucken AWT, Swing, JavaFX & SWT 1
F 2D-Grafik JTextArea drucken bringt mieses Ergebnis AWT, Swing, JavaFX & SWT 2
J bestimmten Bereich eines JPanels drucken AWT, Swing, JavaFX & SWT 2
L Charset beim Drucken falsch AWT, Swing, JavaFX & SWT 2
Sugan JavaFX Bilder drucken AWT, Swing, JavaFX & SWT 0
O JTable linksbündig drucken (nicht der Zelleninhalt) AWT, Swing, JavaFX & SWT 2
M Swing PDF Datei nach drucken nicht löschbar AWT, Swing, JavaFX & SWT 6
F AWT Drucken verschluckt inhalt AWT, Swing, JavaFX & SWT 1
S JTable im Hoch- und Querformat angepasst drucken AWT, Swing, JavaFX & SWT 1
kaoZ JFrame Drucken AWT, Swing, JavaFX & SWT 8
B Drucken der JTextArea AWT, Swing, JavaFX & SWT 4
Z Drucken AWT, Swing, JavaFX & SWT 2
A Swing Drucken eines JTextPanes AWT, Swing, JavaFX & SWT 7
M JTable Drucken NullpointerException +JTable speichern AWT, Swing, JavaFX & SWT 6
C Swing Drucken von JPanel AWT, Swing, JavaFX & SWT 14
E Drucken von JPanel mit richtiger Skalierung AWT, Swing, JavaFX & SWT 5
L [SWT] Daten und Bilder drucken AWT, Swing, JavaFX & SWT 2
S AWT Drucken aus bestimmtem Papierfach AWT, Swing, JavaFX & SWT 7
S Probleme beim drucken AWT, Swing, JavaFX & SWT 13
M Swing JTable drucken/Darstellung AWT, Swing, JavaFX & SWT 2
D 2D-Grafik Problem beim Drucken eines Grafik-Objekts AWT, Swing, JavaFX & SWT 2
W AWT Drucken ohne Druckdialog AWT, Swing, JavaFX & SWT 2
O JTable mit Inhalt drucken AWT, Swing, JavaFX & SWT 3
C Swing Briefe/Dokumente zum Drucken erstellen AWT, Swing, JavaFX & SWT 20
D Drucken eines "Formulars" in abgeänderter Form AWT, Swing, JavaFX & SWT 5
P Jpanel mit Komponenten drucken AWT, Swing, JavaFX & SWT 3
T Drucken eines JFrame AWT, Swing, JavaFX & SWT 2
H AWT Oberer Seitenrand kann beim Drucken vom Anwender nicht verstellen werden. AWT, Swing, JavaFX & SWT 6
P Drucken von Jtextpane mit Seitenangabe AWT, Swing, JavaFX & SWT 1
A Probleme beim Drucken AWT, Swing, JavaFX & SWT 5
D Vorabberatung :) Briefe gestalten und drucken (als PDF) AWT, Swing, JavaFX & SWT 3
N Nur ein Element sichtbar beim Drucken eines JFrame AWT, Swing, JavaFX & SWT 9
A Probleme beim Drucken (Seite wird abgeschnitten) AWT, Swing, JavaFX & SWT 2
N JTable: Drucken mit größerer RowHeight AWT, Swing, JavaFX & SWT 2
N JPanel nicht ganz drucken AWT, Swing, JavaFX & SWT 2
A Probleme mit dem Drucken AWT, Swing, JavaFX & SWT 2
K Seite zum drucken einrichten AWT, Swing, JavaFX & SWT 2
F Drucken in Java AWT, Swing, JavaFX & SWT 3
A Problem mit der Seiteneinrichtung beim Drucken AWT, Swing, JavaFX & SWT 7
A Drucken einer JList AWT, Swing, JavaFX & SWT 4
C JTable drucken AWT, Swing, JavaFX & SWT 7
O Panel drucken AWT, Swing, JavaFX & SWT 2
Y Problem beim Drucken AWT, Swing, JavaFX & SWT 2
A Drucken AWT, Swing, JavaFX & SWT 23
H JTable drucken mit Header AWT, Swing, JavaFX & SWT 4
& XHTML drucken mit (oder ohne) Flying Saucer AWT, Swing, JavaFX & SWT 12
C Fenster rücken beim Drucken in den Hintergrund AWT, Swing, JavaFX & SWT 6
& mehrseitige HTML-Dokumente drucken AWT, Swing, JavaFX & SWT 2
ARadauer jtable drucken unter java 1.3 AWT, Swing, JavaFX & SWT 2
B Unsichtbares JPanel drucken. AWT, Swing, JavaFX & SWT 14
C Text drucken? AWT, Swing, JavaFX & SWT 2
V Drucken in Java AWT, Swing, JavaFX & SWT 2
K Drucken von JTextComponenten AWT, Swing, JavaFX & SWT 2
R Drucken unter jdk 1.4 mit JTable AWT, Swing, JavaFX & SWT 11
B Ein großes JTextPane komplett drucken AWT, Swing, JavaFX & SWT 2
I Drucken: Programm stürzt bei AWT, Swing, JavaFX & SWT 7
I Fensterinhalt drucken AWT, Swing, JavaFX & SWT 2
F Transparent bzw. transfluent(durscheinend) drucken? AWT, Swing, JavaFX & SWT 2
P Idee zum drucken von JTextField und JTable AWT, Swing, JavaFX & SWT 2
O JTable, mehrere Spalten drucken AWT, Swing, JavaFX & SWT 4
orenishii mehrseitig Images anzeigen und drucken SimpleBook.java AWT, Swing, JavaFX & SWT 5
R JPanel drucken AWT, Swing, JavaFX & SWT 5
foobar JTable im Hintergrund drucken AWT, Swing, JavaFX & SWT 2
S Drucken - Bild skalieren AWT, Swing, JavaFX & SWT 2
S JAI und das praktische Drucken AWT, Swing, JavaFX & SWT 4
S Drucken AWT, Swing, JavaFX & SWT 15
S JTable - Drucken AWT, Swing, JavaFX & SWT 10
G HTML aus JEditorPane drucken AWT, Swing, JavaFX & SWT 2
G JPanel drucken AWT, Swing, JavaFX & SWT 2
B componente drucken AWT, Swing, JavaFX & SWT 3
M Ein Bild aus einem Panel drucken? AWT, Swing, JavaFX & SWT 11
G Frage zum Drucken AWT, Swing, JavaFX & SWT 2
V Problem beim drucken AWT, Swing, JavaFX & SWT 4
L swing komponenten Drucken AWT, Swing, JavaFX & SWT 7
G JTextPane drucken AWT, Swing, JavaFX & SWT 2
S Drucken eines Panels AWT, Swing, JavaFX & SWT 3
T JEditorPane-content drucken AWT, Swing, JavaFX & SWT 2
T Drucken des Inhaltes einer JTextArea AWT, Swing, JavaFX & SWT 4
J JTextArea drucken AWT, Swing, JavaFX & SWT 4
@ Erzeugen einer Maske zum drucken AWT, Swing, JavaFX & SWT 2
G Drucken?? AWT, Swing, JavaFX & SWT 4
H JTable drucken AWT, Swing, JavaFX & SWT 4
K JPanel drucken AWT, Swing, JavaFX & SWT 4
P JTable drucken AWT, Swing, JavaFX & SWT 2
B JPanel Drucken AWT, Swing, JavaFX & SWT 1
B Batik: Inhalt JComponent to SVG? AWT, Swing, JavaFX & SWT 6
Hatsi09 JComponent anklicken und "entklicken" AWT, Swing, JavaFX & SWT 7
L JComponent aus JPanel anhand Mausposition ermitteln AWT, Swing, JavaFX & SWT 10
S Swing Schwierigkeiten mit JComponent AWT, Swing, JavaFX & SWT 4
T Swing JComponent vergrößern AWT, Swing, JavaFX & SWT 4
L JComponent und MouseMotionListener AWT, Swing, JavaFX & SWT 2
M Mouse Click Event ohne ein JComponent Objekt AWT, Swing, JavaFX & SWT 3
L Eigene JComponent in GridLayout AWT, Swing, JavaFX & SWT 9
Z JComponent's requestFocus() - Wieso nicht immer anwendbar? AWT, Swing, JavaFX & SWT 1
Z Java-Swing : JComponent AWT, Swing, JavaFX & SWT 2
W JComponent - ComponentListener - resized / moved AWT, Swing, JavaFX & SWT 5
Developer_X Wie heißt das JComponent hier? AWT, Swing, JavaFX & SWT 2
A Swing Eigene JComponent Scrollable AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben