Bonjour à tous,
Je me permet de venir vers vous pour une aide très précieuse.
Voilà j'utilise jasperviewer que j'ai placé dans un JDialog pour afficher mon état :
Code :
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
| public class MyViewer extends JDialog{
private static final long serialVersionUID = 1L;
private JRViewer viewer = null;
private boolean isExitOnClose = true;
private JPanel pnlMain;
public MyViewer(JasperPrint jasperPrint){
this.isExitOnClose = false;
initView();
this.viewer = new JRViewer(jasperPrint);
//this.pnlMain.add(this.viewer, BorderLayout.CENTER);
}
public MyViewer(JasperPrint jasperPrint,boolean isExitOnClose){
this.isExitOnClose = isExitOnClose;
initComponents();
this.viewer = new JRViewer(jasperPrint);
this.pnlMain.add(this.viewer, BorderLayout.CENTER);
}
private void initComponents(){
pnlMain = new JPanel();
setTitle("MyViewer");
setIconImage(
new javax
.swing
.ImageIcon(
getClass().getResource(
"/net/sf/jasperreports/view/images/jricon.GIF"))
.getImage());
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
exitForm();
}
});
pnlMain.setLayout(new java.awt.BorderLayout());
getContentPane().add(pnlMain, java.awt.BorderLayout.CENTER);
pack();
java.awt.Dimension screenSize =
java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setSize(new java.awt.Dimension(750, 550));
setLocation(
(screenSize.width - 750) / 2,
(screenSize.height - 550) / 2);
this.setModal(true);
}
void exitForm(){
if(this.isExitOnClose){
this.dispose();
}else{
this.setVisible(false);
this.viewer.clear();
this.viewer = null;
this.getContentPane().removeAll();
this.dispose();
}}
void initView(){
String fileName = null;
String url = "jdbc:mysql://localhost/ecolexpert";
String login = "root";
String password = "mysql";
Connection connection = null;
try {
// - Connexion à la base
Driver monDriver = new com.mysql.jdbc.Driver();
DriverManager.registerDriver(monDriver);
connection = (Connection) DriverManager.getConnection(url, login, password);
System.out.println("Connection is OK");
// - Load & compile report
JasperDesign jasperDesign = new JasperDesign();
// jasperDesign = JRXmlLoader.load("C:\\prosuviande\\ListeReport.jrxml");
jasperDesign = JRXmlLoader.load("C:\\ECOLExpert\\Reports\\TOUTESMA.jrxml");
//jasperDesign = JRXmlLoader.load("C:\\prosuviande\\JasperSoft\\iReport-2.0.4\\jrxml\\TEST1.jrxml");
System.out.println("Load is successful");
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
System.out.println("Compile is OK");
// - Paramètres à envoyer au rapport
Map parameters = new HashMap();
parameters.put("Titre", "All customers");
System.out.println("Put param is OK");
// - Execution du rapport
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
System.out.println("Fill report is OK");
// - Création du rapport au format PDF
viewReport(jasperPrint);
} catch (JRException e) {
System.out.println("JRException");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("SQLException");
e.printStackTrace();
} finally {
try {
connection.close();
//System.out.println("Connection is closed");
} catch (SQLException e) {
System.out.println("SQLException: close connection");
e.printStackTrace(); } }}
private static void usage() {
System.out.println("JasperViewer usage:");
System.out.println("\tjava JasperViewer -XML -Ffile"); }
public static void viewReport(JasperPrint jasperPrint) {
JasperViewer jasperViewer = new JasperViewer(jasperPrint);
jasperViewer.setVisible(true); }} |
J'appelle cette boîte de dialogue à partir de la fenêtre principale comme suit :
Code :
1 2 3
| JasperPrint jasperPrint = new JasperPrint();
MyViewer voir = new MyViewer(jasperPrint);
voir.setVisible(true); |
Mon problème est que lorsque je ferme l'état, tout le programme se ferme. A quel niveau dois-je encore apporter les modifications afin que l'adaptation soit totale.
Merci d'avance