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 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
| import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.font.FontRenderContext;
import java.awt.font.TextLayout;
import java.awt.geom.AffineTransform;
import java.awt.geom.GeneralPath;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.util.Locale;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
/**
* This program demonstrates how to print 2D graphics
*/
public class EssaiImprimer {
public static void main(String[] args) {
PrintTestFrame frame = new PrintTestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.show();
}
}
/**
* This frame shows a panel with 2D graphics and buttons to print the graphics
* and to set up the page format.
*/
class PrintTestFrame extends JFrame {
private MonAction menuEn = null;
private MonAction menuFr = null ;
private JMenuBar menuBar = new JMenuBar();
private JMenu menuLanguage = null;
private JButton pageSetupButton = null;
private JButton printButton = null;
private JButton mise_en_page_toto = null;
PrinterJob job = null;
public PrintTestFrame() {
setTitle("PrintTest");
setSize(WIDTH, HEIGHT);
//Création de la barre de menu
menuBar = new JMenuBar();
menuLanguage = new JMenu();
menuFr = new MonAction ("Français/French",this) ;
menuLanguage.add(menuFr);
menuEn = new MonAction ("Anglais/English", this) ;
menuLanguage.add(menuEn);
menuBar.add(menuLanguage);
setJMenuBar(menuBar);
Container contentPane = getContentPane();
canvas = new PrintPanel();
contentPane.add(canvas, BorderLayout.CENTER);
JPanel buttonPanel = new JPanel();
printButton = new JButton();
buttonPanel.add(printButton);
printButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
attributes = null;
try {
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable(canvas);
attributes = new HashPrintRequestAttributeSet();
if (job.printDialog(attributes)) {
job.print(attributes);
}
} catch (PrinterException exception) {
JOptionPane.showMessageDialog(PrintTestFrame.this,
exception);
}
attributes = null;
}
});
pageSetupButton = new JButton();
buttonPanel.add(pageSetupButton);
pageSetupButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
attributes = null;
attributes = new HashPrintRequestAttributeSet();
PrinterJob job = PrinterJob.getPrinterJob();
job.pageDialog(attributes);
}
});
contentPane.add(buttonPanel, BorderLayout.NORTH);
paintLabelWithLanguage();
}
private PrintPanel canvas;
private PrintRequestAttributeSet attributes = null;
private static final int WIDTH = 300;
private static final int HEIGHT = 300;
protected void paintLabelWithLanguage() {
menuLanguage.setText(MonAction.getAnInternationalizeString("menuLanguage"));
setTitle(MonAction.getAnInternationalizeString("title"));
printButton.setText(MonAction.getAnInternationalizeString("Print"));
pageSetupButton.setText(MonAction.getAnInternationalizeString("Page_setup"));
System.out.println("loc"+Locale.getDefault());
}
}
/**
* This panel generates a 2D graphics image for screen display and printing.
*/
class PrintPanel extends JPanel implements Printable {
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
drawPage(g2);
}
public int print(Graphics g, PageFormat pf, int page)
throws PrinterException {
if (page >= 1)
return Printable.NO_SUCH_PAGE;
Graphics2D g2 = (Graphics2D) g;
g2.translate(pf.getImageableX(), pf.getImageableY());
g2.draw(new Rectangle2D.Double(0, 0, pf.getImageableWidth(), pf
.getImageableHeight()));
drawPage(g2);
return Printable.PAGE_EXISTS;
}
/**
* This method draws the page both on the screen and the printer graphics
* context.
*
* @param g2
* the graphics context
*/
public void drawPage(Graphics2D g2) {
FontRenderContext context = g2.getFontRenderContext();
Font f = new Font("Serif", Font.PLAIN, 72);
GeneralPath clipShape = new GeneralPath();
TextLayout layout = new TextLayout(MonAction.getAnInternationalizeString("Hello"), f, context);
AffineTransform transform = AffineTransform.getTranslateInstance(0, 72);
Shape outline = layout.getOutline(transform);
clipShape.append(outline, false);
layout = new TextLayout(MonAction.getAnInternationalizeString("World"), f, context);
transform = AffineTransform.getTranslateInstance(0, 144);
outline = layout.getOutline(transform);
clipShape.append(outline, false);
g2.draw(clipShape);
g2.clip(clipShape);
final int NLINES = 50;
Point2D p = new Point2D.Double(0, 0);
for (int i = 0; i < NLINES; i++) {
double x = (2 * getWidth() * i) / NLINES;
double y = (2 * getHeight() * (NLINES - 1 - i)) / NLINES;
Point2D q = new Point2D.Double(x, y);
g2.draw(new Line2D.Double(p, q));
}
}
} |
Partager