Drucken von JFrame

javaml

Mitglied
Hallo,
gibt es eine Möglichkeit, einen JFrame mit all seinen Komponenten so auszudrucken, wie er auf dem Bildschirm zu sehen ist?
(ich habe Einiges zum Drucken unter Java im Internet gefunden, aber noch keine Lösung für genau diese Frage)

Danke schonmal
javaml
 
Danke, super, das bringt mich schon ein Stück weiter.

Ich habe aber leider wie mir eben aufgefallen ist beim Posten einen kleinen Fehler gemacht. Genauer gesagt will ich den Inhalt eines JInternalFrames ausdrucken, der sich innerhalb eines JFrames befindet(und doch nicht den ganzen JFrame). Hat jemand einen Tipp?
Gruß
javaml
 
Moin!
Dann machst du halt nur einen Screenshot von dem entsprechenden InternalFrame.
Mit getLocationOnScreen() bekommst du dessen tatsächliche Koordinaten (bzgl. des Bildschrims)

*grüssle*
MeinerEiner
 
Ah, das ist also auch möglich, ein Screenshot von einzelnen Komponenten wie JInternalFrames?
Super, ich probiers gleich mal aus, danke...
 
Moin,
ups, jetzt muss ich doch nochmal fragen:
ich habe noch keine Erfahrung mit dem Drucken unter Java und habe zwar Beispiele gefunden für das Drucken(unter JPS und älteren Methoden) von Grafiken und von Texten,
aber nicht von Images.
Ich habe jetzt einen Screenshot als Image gespeichert. Wie bekomme ich den Screenshot gedruckt?
Danke im voraus
 
Moin!
Muss mich mal korrigieren.. Mir ist nämlich gerade eingefallen, das es noch eine viel einfachere Methode zum Drucken einer Komponente gibt. Da muss man net groß rumachen, sondern einfach die Druckfunktion nutzen, die jeder Container bereits von Haus aus besitzt:
Code:
        JFrame j = new JFrame();
        JPanel panel1 = new JPanel();
        JPanel panel2 = new JPanel();
        panel1.add(new JLabel("Test1              Test1 "));
        panel2.add(new JLabel("Test2              Test2"));
        panel2.add(new JLabel("Test3              Test3  "));
        j.getContentPane().setLayout(new GridLayout(2,1));
        j.getContentPane().add(panel1);
        j.getContentPane().add(panel2);
        
        
        j.setSize(300,300);
        j.setVisible(true);
        Toolkit tk = Toolkit.getDefaultToolkit();
        PrintJob pj = tk.getPrintJob(j, "", null );
        
        if ( pj != null ) {
            Graphics g = pj.getGraphics();
            panel1.printAll( g );
            g.dispose();
            pj.end();
        }

Naja, zumindest weist du nun auch , wie man Screenshots erstellt ;)

*grüssle*
MeinerEiner
 
Zuletzt bearbeitet von einem Moderator:
Moin,
danke, das hilft schon deutlich weiter. Es geht also doch prinzipiell mit der AWT printing API...

Leider ist mir aber eingefallen, dass ich noch etwas vergessen habe:
unter dem einen Frame(von JInternalFrame abgeleitet) befindet sich noch ein JInternalFrame, der auch(auf der gleichen Seite, unter dem anderen) ausgedruckt werden soll.
Ich habe auch mal versucht, beide in ein JPanel einzufügen, dabei sind aber auch Schwierigkeiten aufgetreten.

Kann mir jemand sagen, wie ich am besten 2 JInternalFrames zusammen ausdrucken kann?
(am besten wäre es, wenn ich auch noch die Größe des Drucks festlegen könnte, weil beides (untereinander) auf 1 DIN A4-Seite passen soll)
Gruß
Marco
 
Hallo,
ich habe eben überlegt, ob es vielleicht doch mit einem Screenshot geht?
Kann ich z. B. nur den rechten Teil eines Frames(ab einer genau festgelegten Position) als Screenshot speichern?
Gruß
Marco
 
Zurück