IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Probleme impression image


Sujet :

AWT/Swing Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 38
    Points : 31
    Points
    31
    Par défaut Probleme impression image
    Bonjour,

    J'ai une classe Impression qui me permet d'imprimer le contenur d'un onglet de mon programme. Je devais rajouter une entete pour cette impression, l'entete se composant d'une image et d'un petit texte.

    J'ai donc fait le necessaire pour changer ma classe, quand je visualise la JFrame qui represente ce qui va etre imprimé elle contient bien l'image, mais a l'impression l'image n'est pas la ...

    Je place mon code ici :
    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
     
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.border.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.image.*;
    import java.awt.print.*;
    import java.awt.geom.*;
    import java.util.*;
    import java.io.*;
    import org.jfree.chart.JFreeChart;
     
    public class Impression extends JFrame implements Printable {
     
    	protected JFreeChart graphe;
    	protected VueModel vue;
    	protected Model m;
    	protected JTable table;
    	protected JPanel panel, infor, haut, entete, ligne1, ligne2, ligne3, g, tab;
    	protected BufferedImage image;
    	protected JLabel labChart = new JLabel();
    	protected TitledBorder info, per;
    	protected Calendar c;
    	protected Properties prop = new Properties();
    	protected FileInputStream in;
    	protected String s = "";
    	protected boolean test = true;
     
     
    	public Impression (VueModel vue, Model m) {
    		this.vue = vue;
    		this.m = m;
     
    		// Creation du panel général
    		panel = new JPanel();
    		panel.setLayout(new BorderLayout());
     
     
    		haut = new JPanel();
    		haut.setLayout(new BoxLayout(haut, BoxLayout.Y_AXIS));
     
    		entete = new JPanel();
    		entete.setLayout(new FlowLayout());
     
    		// Récuperation du path de l'image et du service
    		try {
    			in = new FileInputStream("Property.ini");
    			prop.load(in);
    			in.close();
    			s = prop.getProperty("pathimage");
    			if (s != null) { entete.add(new ImageResized(Toolkit.getDefaultToolkit().getImage(s),new Dimension(200,100))); }
    			//si l'image n'est pas enregistré dans le fichier Property le booleen est a faux
    			else { test = false; }
    			s = prop.getProperty("service");
    			if (s != null) { entete.add(new JLabel("         ")); entete.add(new JLabel("Service de " + s)); }
    			else { test = false; }
    		}
    		catch(IOException ex) { System.out.println("IOEx"); }
     
    		//Mise en place des informations patients
    		ligne1 = new JPanel();
    		ligne1.setLayout(new FlowLayout());
    		ligne1.add(new JLabel("Nom de jeune fille : " + vue.nom1.getText() + "   "));
    		ligne1.add(new JLabel("Prenom : " + vue.prenom.getText() + "   "));
    		ligne1.add(new JLabel("Nom d'epouse : " + vue.nom2.getText() + "   "));
    		ligne1.add(new JLabel("Date de naissance : " + vue.dg.getText() + "   "));
    		ligne1.add(new JLabel("Date de debut de grossesse : " + vue.dg.getText()));
     
    		ligne2 = new JPanel();
    		ligne2.setLayout(new FlowLayout());
    		ligne2.add(new JLabel("Taille : " + vue.taille.getText() + " cm   "));
    		ligne2.add(new JLabel("Poids : " + vue.poids.getText() + " kg   "));
    		ligne2.add(new JLabel("Parite : " + vue.parite.getText() + "   "));
     
    		if (vue.check.isSelected()) {
    			if (vue.sexe1.isSelected()) { ligne2.add(new JLabel("Sexe du foetus : Garcon")); }
    			if (vue.sexe2.isSelected()) { ligne2.add(new JLabel("Sexe du foetus : Fille")); }
    		}
     
    		ligne3 = new JPanel();
    		ligne3.setLayout(new FlowLayout());
    		c = new GregorianCalendar();
    		ligne3.add(new JLabel("Date du jour : " + c.get(Calendar.DATE) + ".0" + (1 + c.get(Calendar.MONTH)) + "." + c.get(Calendar.YEAR)));
     
    		infor = new JPanel();
    		infor.setLayout(new BoxLayout(infor, BoxLayout.Y_AXIS));
    		infor.add(ligne1);
    		infor.add(ligne2);
    		infor.add(ligne3);
    		info = BorderFactory.createTitledBorder(BorderFactory.createLineBorder(new Color(85, 175, 255)), "Informations Patient");
    		infor.setBorder(info);
     
    		// Si l'image était enregistrée on ajoute l'entete + les infos patient, puis on ajoute haut au panel general
    		if (test) {
    			haut.add(entete);
    			haut.add(infor);
    			panel.add(haut, BorderLayout.NORTH);
    		}
    		else { panel.add(infor, BorderLayout.NORTH); }
     
    		g = new JPanel();
    		g.setLayout(new FlowLayout());
     
    		// les if qui suivent servent a imprimer le bon onglet
    		if ( vue.onglet.getSelectedIndex() == 1 ) {
    			graphe = m.getGraphe();
    			image = graphe.createBufferedImage(1280, 1792);
    			labChart.setIcon(new ImageIcon(image));
    			g.add(labChart);
    			panel.add(g, BorderLayout.CENTER);
    		}
    		else if ( vue.onglet.getSelectedIndex() == 2 ) {
    			graphe = m.getGraphe2();
    			image = graphe.createBufferedImage(1280, 1792);
    			labChart.setIcon(new ImageIcon(image));
    			g.add(labChart);
    			panel.add(g, BorderLayout.CENTER);
    		}
    		else if ( vue.onglet.getSelectedIndex() == 4 ) {
    			tab = new JPanel();
    			tab.setLayout(new FlowLayout());
    			table = Graphe.getTable(m.getPer());
    			per = BorderFactory.createTitledBorder(BorderFactory.createLineBorder(new Color(85, 175, 255)), "Tableau percentile");
    			tab.setBorder(per);
    			tab.add(table);
    			panel.add(tab);
    		}
     
    		this.getContentPane().add(panel);
    	}
     
    	public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
     
    		if(pageIndex != 0) {
    			System.out.println("Probleme de page index: " + pageIndex);
    			return NO_SUCH_PAGE;
    		}
     
    		Dimension dim = this.getSize();
    		double scaleX = pageFormat.getImageableWidth() / dim.width;
    		double scaleY = pageFormat.getImageableHeight() / dim.height;
    		double scale = Math.min(scaleX, scaleY);
     
    		Graphics2D g2D = (Graphics2D)graphics;
    		g2D.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
    		g2D.scale(scale, scale);
     
     
    		this.pack();
    		this.setVisible(true);
    		this.print(g2D);
    		this.setVisible(false);
    		return PAGE_EXISTS;
    	}
     
    }
    Merci beaucoup

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 872
    Points : 22 939
    Points
    22 939
    Billets dans le blog
    53
    Par défaut
    Tu va me faire le plaisir de copier 100 fois "Je ne dois pas utiliser ToolKit quand j'ai besoin d'une image immediatement." !

    Voir la !

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 38
    Points : 31
    Points
    31
    Par défaut
    Excuse moi, mais je ne suis pas sur d'avoir bien compris la cause de la chose ^^

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 872
    Points : 22 939
    Points
    22 939
    Billets dans le blog
    53
    Par défaut
    Je pense que :

    Citation Envoyé par moi, des tonnes et des tonnes de fois
    Toolkit (et MediaTracker) chargent une Image de maniere asynchrone, c'est a dire que ces methodes retournent une image vide et que l'appelant sera notifie ulterieurement de son chargement via le mecanisme de l'ImageObserver. Ainsi votre image peut ne pas etre chargee en memoire lors de votre affichage ou du traitement si elle est distante ou trop grosse.

    ImageIcon et ImageIO sont des chargements synchrones, c'est a dire que leur appel bloque tant que l'image n'est completement chargee. De plus des exceptions seront levee si le chemin de l'image n'est pas correct.
    Mais bien sur je ne peux pas verifier ca moi-meme (je peux me tromper bien sur sur la cause du probleme).

    C'est juste que c'est la cause de 90% des erreurs du type "Au secours : mon image ne s'affiche pas !" (les 10% etant que le chemin de l'image n'est pas correct et que ToolKit ne renvoie pas d'erreur dans ce cas - J'imagine que tu as bien verifier que l'image est affichee dans le document quand celui-ci est present a l'ecran ?).

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 38
    Points : 31
    Points
    31
    Par défaut
    Oui j'ai vérifié et l'image s'affiche bien. Je vais essayer ca tout de suite.

    En tout cas merci pour tes explications, je n'avais jamais entendu parler de ca.

    Je met [RESOLU] si ca fonctionne

    EDIT: Ca fonctionne, merci bouye (k) :d

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme d'impression image coupée
    Par lumiere blanche dans le forum Périphériques
    Réponses: 1
    Dernier message: 21/02/2008, 15h10
  2. [Upload] Probleme upload images
    Par yveslens dans le forum Langage
    Réponses: 6
    Dernier message: 22/08/2005, 10h42
  3. [VB.NET] Probleme impression document word
    Par lord_kyshow dans le forum ASP.NET
    Réponses: 36
    Dernier message: 09/06/2005, 17h07
  4. Probleme d'image temporaire
    Par mIch°° dans le forum Composants VCL
    Réponses: 14
    Dernier message: 03/12/2004, 11h05
  5. [FLASH MX 2004] probleme impression
    Par dens63 dans le forum Flash
    Réponses: 6
    Dernier message: 30/04/2004, 15h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo