Ce que vous voyez ci-dessous n'est pas une applet mais deux résultats de l'application présentée dans cet exemple. L'objectif de l'application est d'avoir une fenêtre représentée par le dessin de gauche qui permette d'imprimer ou bien cette fenêtre tout entière, ou bien le JPanel contenant le dessin qui est à l'intérieur. Plus précisément, si on clique sur le bouton "imprimer", une fenêtre de dialogue apparaît, qui propose d'imprimer : il faut y indiquer une imprimante (on peut aussi choisir d'imprimer sur un fichier postcript) et l'impression correspond au choix indiqué par les cases à cocher.
Vous pouvez voir ci-dessous la fenêtre initiale de l'application et la fenêtre obtenue quand on appuie sur le bouton "imprimer".
Le dessin est ici réalisé dans une instance de la classe MonDessin ; on peut imprimer soit toute la fenêtre, soit le contenu de cette instance de la classe MonDessin, selon ce qu'on coche avec les boutons-radios.
Le programme utilisé est le suivant :
import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.ButtonGroup; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Graphics; import java.awt.PrintJob; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.util.Properties; class MonDessin extends JPanel { MonDessin() { setPreferredSize(new Dimension(180, 120)); } public void paintComponent(Graphics g) { g.drawOval(50, 20, 80, 80); } } public class Imprimer extends JFrame implements ActionListener { MonDessin dessin = new MonDessin(); JButton imprimer = new JButton("imprimer"); JRadioButton choixTout = new JRadioButton("tout", true); JRadioButton choixDessin = new JRadioButton("dessin", false); public Imprimer() { ButtonGroup choix = new ButtonGroup(); choix.add(choixTout); choix.add(choixDessin); JPanel p = new JPanel(); p.add(choixTout); p.add(choixDessin); add(p, BorderLayout.NORTH); add(dessin, BorderLayout.CENTER); add(imprimer, BorderLayout.SOUTH); imprimer.addActionListener(this); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setVisible(true); } public void actionPerformed(ActionEvent e) { Properties props = new Properties(); props.setProperty("awt.print.paperSize", "a4"); props.setProperty("awt.print.destination", "printer"); PrintJob demandeDImpression = getToolkit().getPrintJob(this, "Impression", props); if (demandeDImpression != null) { Graphics gImpr = demandeDImpression.getGraphics(); if (choixTout.isSelected()) printAll(gImpr); else dessin.printAll(gImpr); gImpr.dispose(); demandeDImpression.end(); } } } class EssaiImprimer { public static void main(String[] arg) { new Imprimer(); } }Vous pouvez aussi récupérer ce programme ou bien le code de l'applet
© Irène Charon, Télécom ParisTech 2011