# druckfunktion die 2. [java-applet]



## runabout (19. Mai 2003)

Hallo zusammen,
also nachdem die Druckfunktion bei meinem Applet nicht funktioniert, hab ich mir gedacht man kann das eventuell auch so regeln das man auf Button-Click ein Bild der gewollten bereiche schiesst ( Screenshot) und sich dann ein neues Fenster mit diesem Bild als Inhalt öffnet so dass man dieses Fenster ausdrucken kann (per Button-Click oder sowas).
Hat hier einer ne Idee wie ich das machen könnte?
Über Hilfe wär ich sehr dankbar.


----------



## Thomas Darimont (19. Mai 2003)

Servus!

Siehe : http://www.tutorials.de/tutorials77467.html

...

Graphics - Kontext des "Panels" beziehen und anschliessend das erhaltene Graphicsobjekt an den PrinterJob übergeben ...


```
...

Image = this.getImage(this.getCodeBase(),"image.jpg");
...

Toolkit tk = Toolkit.getDefaultToolkit();
PrintJob pj = tk.getPrintJob( new Frame(), "", null );

if ( pj != null ) {
//
pj.getGraphics().drawImage(img,0,0,this);


pj.end();
}
...
```

weiters Beispiel findest du unter :

http://www.boku.ac.at/javaeinf/jein3.html


"Wenn man ein Applet ausdrucken will, muss man mit getParent() das zugehörige Frame bestimmen und dann dieses in getPrintJob angeben. Außerdem muss der Benutzer dem Applet mit dem SecurityManager die Erlaubnis zum Drucken am Client-Rechner geben. " Zitat: siehe obige URL

... oder versuchs mit JavaScript "window.print()"


----------



## Thomas Darimont (20. Mai 2003)

Servus!

Habs jetzt hinbekommen ... (02:33 Uhr) ;-)

... poste die Lösung im Laufe des Tages ...

(Funktioniert alles prima, wenn man weis, wie man Applets signiert 
und die PolicyDatei anpasst ;-P)

Hier die "minimalversion" eines Druckapplets ... aber wie schon gesagt, dass Geheimnis steckt nicht im Code sondern im Dateihandling ... [jar,jarsigner,keytool ...]


```
import java.awt.*;
import java.awt.print.*;
import java.awt.event.*;

/*
 * PrinterApplet.java
 *
 * Created on 19. Mai 2003, 23:04
 */

/**
 *
 * @author  Administrator
 */
public class PrinterApplet extends java.applet.Applet {
    
    Image img = null;
    /** Initializes the applet PrinterApplet */
    public void init() {
        initComponents();
        //String imgstr = this.getParameter("image");
        System.out.println(this.getCodeBase()+"sp.jpg");
        //img = this.getToolkit().getDefaultToolkit().createImage(this.getCodeBase()+"sp.jpg");
        img = this.getImage(this.getCodeBase(),"sp.jpg");
        
        MediaTracker mt = new MediaTracker(this);
        
        mt.addImage(img,0);
        
        try{
            mt.waitForAll();
        }catch(InterruptedException ie){
            System.out.println(ie);
        }
        
        
        
    }
    
    public void start(){
        
        
    }
    
    /** This method is called from within the init() method to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    private void initComponents() {
        panel1 = new java.awt.Panel();
        button1 = new java.awt.Button();

        setLayout(new java.awt.BorderLayout());

        panel1.setLayout(new java.awt.BorderLayout());

        button1.setLabel("button1");
        button1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                button1ActionPerformed(evt);
            }
        });

        panel1.add(button1, java.awt.BorderLayout.SOUTH);

        add(panel1, java.awt.BorderLayout.CENTER);

    }
    
    private void button1ActionPerformed(java.awt.event.ActionEvent evt) {
        // Add your handling code here:
        
        this.panel1.getGraphics().drawImage(img,0,0,this);
        
        Toolkit tk = this.getToolkit().getDefaultToolkit();
        PrintJob pj = tk.getPrintJob(new Frame("TEST"),"HALLO",null);
        
        
        if ( pj != null ) {
            Graphics g = pj.getGraphics();
            //f.printComponents( g );
            pj.getGraphics().drawImage(img,0,0,this.panel1);
            g.dispose();
            pj.end();
        }
        
        
    }
    
    
    // Variables declaration - do not modify
    private java.awt.Button button1;
    private java.awt.Panel panel1;
    // End of variables declaration
    
}
```


Gruss Tom


----------

