Bonjour à tous,
je souhaite imprimer le contenu d'une fenêtre à une certaine échelle, car pour le moment lorsque j'imprime, c'est environ 2 fois plus gros que ce que j'ai à l'écran... Donc j'aimerais pouvoir préciser l'échelle dans le code où bien dans la boite de dialogue d'impression mais ça doit être un peu plus gore à faire. Pour l'info voici mon code qui pourra servir à d'autres:
import java.awt.*;
import java.awt.event.*;
import java.awt.print.*;
import javax.swing.*;
class EcouteurImprimer implements ActionListener
{
InterfaceAImprimer i;
public EcouteurImprimer(InterfaceAImprimer i)
{
this.i = i;
}
public void actionPerformed(ActionEvent ae) {
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setPrintable(i);
if (pj.printDialog()) {
try { pj.print(); }
catch (PrinterException pe) {
System.out.println(pe);
}
}
}
}
public class InterfaceAImprimer extends JFrame implements Printable {
public static void main(String[] args) {
InterfaceAImprimer i = new InterfaceAImprimer();
i.setVisible(true);
}
public InterfaceAImprimer() {
super("ComponentPrinterFrame v1.0");
createInterface();
}
protected void createInterface() {
JPanel panel = new JPanel();
JButton printButton = new JButton("Print");
panel.add(printButton);
panel.add(new JList(new Object[]{ "One", "Two", "Three" }));
panel.add(new JButton("Push me"));
panel.add(new JCheckBox("Chess", true));
panel.add(new JComboBox(new Object[] { "Eins", "Zwei", "Drei" }));
setContentPane(panel);
printButton.addActionListener(new EcouteurImprimer(this));
}
public int print(Graphics g, PageFormat pf, int pageIndex) {
if (pageIndex != 0) return NO_SUCH_PAGE;
Graphics2D g2 = (Graphics2D)g;
g2.translate(pf.getImageableX(), pf.getImageableY());
getContentPane().paint(g2);
return PAGE_EXISTS;
}
}
Ouf...
D'avance merci