Bonjour,

J'ai developé une petite application qui doit afficher la boite de dialogue d'impression en français ou en anglais selon la langue choisie.

Mon problème, une fois la langue choisie, la boite s'affiche dans cette langue et quand je selectionne l'autre langue la boite ne se mis pas à jour

Merci pour votre aide


Ci-dessous le code source

EssaiImprimer.java

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)); 
} 
} 
}
MonAction.java

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
import java.awt.event.ActionEvent; 
import java.util.Locale; 
import java.util.ResourceBundle; 
import javax.swing.AbstractAction; 
import javax.print.attribute.standard.PrinterLocation; 
 
class MonAction extends AbstractAction 
{ public MonAction (String nom, PrintTestFrame afen) 
 
{ super (nom) ; 
this.nom = nom ; 
fen = afen; 
bundle = ResourceBundle.getBundle(LANGUAGE_FILE, Locale.getDefault()); 
} 
public void actionPerformed (ActionEvent e) 
{ 
if (nom == "Anglais/English") 
{ 
Locale.setDefault(new Locale("en","ENGLISH")); 
bundle = ResourceBundle.getBundle(LANGUAGE_FILE, Locale.ENGLISH); 
fen.paintLabelWithLanguage(); 
} 
if (nom == "Français/French") 
{ 
Locale.setDefault(new Locale("fr","FRANCE")); 
bundle = ResourceBundle.getBundle(LANGUAGE_FILE, Locale.FRANCE); 
fen.paintLabelWithLanguage(); 
} 
} 
 
 
public static String getAnInternationalizeString(String key) { 
// On retourne la valeur associee a la cle 
return bundle.getString(key); 
} 
 
private PrintTestFrame fen; 
private String nom; 
private static ResourceBundle bundle; 
private static final String LANGUAGE_FILE = "language"; 
}
language_fr_FR.properties


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
menuLanguage=langue 
title=Application FR 
Print=Imprimer 
Page_setup=Mise en page 
Hello=Bonjour 
World=le monde
language_en.properties

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
menuLanguage=language 
title=Application US 
Print=Print 
Page_setup=Page setup 
Hello=Hello 
World=World