1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
|
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package test;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.awt.print.*;
import javax.swing.*;
/**
*
* @author Is Me
*/
class PrintPreview extends JFrame implements ActionListener, ItemListener {
JButton printButton = new JButton("Imprimer");
Pageable pageable = null;
double scale = 1.0;
Page page[] = null;
JComboBox combobox = new JComboBox();
CardLayout cardlayout = new CardLayout();
JPanel previewPanel = new JPanel(cardlayout);
JButton backButton = new JButton("Précedente"), forwardButton = new JButton("Suivante");
public PrintPreview(final Printable printable, final PageFormat pageFormat) {
super("Aperçu");
pageable = new Pageable() {
@Override
public int getNumberOfPages() {
Graphics graphics = new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB).getGraphics();
int numPages = 0;
try {
while (printable.print(graphics, pageFormat, numPages) == Printable.PAGE_EXISTS) {
numPages++;
}
} catch (Exception ex) {
}
return numPages;
}
@Override
public PageFormat getPageFormat(int x) {
return pageFormat;
}
@Override
public Printable getPrintable(int x) {
return printable;
}
};
createPreview();
}
private void createPreview() {
page = new Page[pageable.getNumberOfPages()];
PageFormat pageFormat = pageable.getPageFormat(0);
Dimension size = new Dimension((int) pageFormat.getPaper().getWidth(), (int) pageFormat.getPaper().getHeight());
if (pageFormat.getOrientation() != PageFormat.PORTRAIT) {
size = new Dimension(size.height, size.width);
}
for (int i = 0; i < page.length; i++) {
combobox.addItem("" + (i + 1));
page[i] = new Page(i, size);
previewPanel.add("" + (i + 1), new JScrollPane(page[i]));
}
setTopPanel();
getContentPane().add(previewPanel, "Center");
pack();
setExtendedState(Frame.MAXIMIZED_BOTH);
setVisible(true);
}
private void setTopPanel() {
FlowLayout fl = new FlowLayout();
GridBagLayout gbl = new GridBagLayout();
JPanel topPanel = new JPanel(gbl), temp = new JPanel(fl);
backButton.addActionListener(this);
forwardButton.addActionListener(this);
backButton.setEnabled(false);
forwardButton.setEnabled(page.length > 1);
temp.add(combobox);
temp.add(backButton);
temp.add(forwardButton);
temp.add(printButton);
topPanel.add(temp);
printButton.addActionListener(this);
combobox.addItemListener(this);
getContentPane().add(topPanel, "North");
}
@Override
public void itemStateChanged(ItemEvent ie) {
cardlayout.show(previewPanel, (String) combobox.getSelectedItem());
backButton.setEnabled(combobox.getSelectedIndex() == 0 ? false : true);
forwardButton.setEnabled(combobox.getSelectedIndex() == combobox.getItemCount() - 1 ? false : true);
validate();
}
@Override
public void actionPerformed(ActionEvent ae) {
Object o = ae.getSource();
if (o == printButton) {
try {
PrinterJob pj = PrinterJob.getPrinterJob();
pj.defaultPage(pageable.getPageFormat(0));
pj.setPageable(pageable);
if (pj.printDialog()) {
pj.print();
}
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, ex.toString(), "Error in Printing", 1);
}
} else if (o == backButton) {
combobox.setSelectedIndex(combobox.getSelectedIndex() == 0 ? 0 : combobox.getSelectedIndex() - 1);
if (combobox.getSelectedIndex() == 0) {
backButton.setEnabled(false);
}
} else if (o == forwardButton) {
combobox.setSelectedIndex(combobox.getSelectedIndex() == combobox.getItemCount() - 1 ? 0 : combobox.getSelectedIndex() + 1);
if (combobox.getSelectedIndex() == combobox.getItemCount() - 1) {
forwardButton.setEnabled(false);
}
}
}
class Page extends JLabel {
final int n;
final PageFormat pageformat;
BufferedImage bufferimage = null;
Dimension size = null;
public Page(int currentpage, Dimension size) {
this.size = size;
bufferimage = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB);
n = currentpage;
pageformat = pageable.getPageFormat(n);
Graphics g = bufferimage.getGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, (int) pageformat.getWidth(), (int) pageformat.getHeight());
try {
pageable.getPrintable(n).print(g, pageformat, n);
} catch (Exception ex) {
}
setIcon(new ImageIcon(bufferimage));
}
}
} |
Partager