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 :

Problème avec lancement d'impression


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé Avatar de Tyrael62
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 90
    Par défaut Problème avec lancement d'impression
    Bonjour à tous ,
    voilà j'ai un soucis j'ai un soucis au niveau de mon lancement d'impression.
    Voici mon code
    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
     
    	    JToolBar tb = new JToolBar();
    	    JButton bt = new JButton("Imprimer", new ImageIcon("print.gif"));
    	    ActionListener lst = new ActionListener() {	    	
    	      public void actionPerformed(ActionEvent e) {
     
        		new Thread(new Runnable() {
        			public void run() {	  
    		        try {
     
    		          PageFormat pageFormat = null;
    		          // Use default printer, no dialog
     
    		          PrinterJob prnJob = PrinterJob.getPrinterJob();
     
    		          if (pageFormat == null) pageFormat = prnJob.defaultPage();
    		          pageFormat = prnJob.pageDialog(pageFormat);		         		          
    		          pageFormat.setOrientation(pageFormat.LANDSCAPE);
    		          prnJob.setPrintable(m_target,pageFormat);
    		          setCursor( Cursor.getPredefinedCursor(
    		            Cursor.WAIT_CURSOR));
    		          prnJob.print();		
    		          setCursor( Cursor.getPredefinedCursor(
    		            Cursor.DEFAULT_CURSOR));
    		          dispose();
    		        }
    		        catch (PrinterException ex) {
    		          ex.printStackTrace();
    		          System.err.println("Erreur d'impression: "+ex.toString());
    		        }
    	    		}
        		}).start();	  
    	      }
    	    };
    	    bt.addActionListener(lst);
    	    bt.setAlignmentY(0.5f);
    	    bt.setMargin(new Insets(4,6,4,6));
    	    tb.add(bt);
    Le problème qui se pose c'est que mon impression se lance même si je clique sur Annuler ou la croix de fermeture de la mise en page.
    J'ai cherché à faire un test pour récupérer la valeur du bouton OK mais je n'ai rien trouvé.Quelqu'un aurait-il une idée sur comment régler ce problème?

  2. #2
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Par défaut
    salut ,

    moi j'ai fait ceci et pas de problème :

    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
         public void imprimer(){
     
     
        	  MessageFormat entete = new MessageFormat(titref.getText());
        	  MessageFormat pied = new MessageFormat("Page {0,number,integer}");
        	   try {
     
            	boolean impression= Tstock.tableau.tablee.print(JTable.PrintMode.FIT_WIDTH,entete,pied);
     
            	if(impression)
     
            		JOptionPane.showMessageDialog(Tstock.tableau.tablee.getParent(), "  Impression de " + titref.getText() +" est complète", "Impression", JOptionPane.INFORMATION_MESSAGE);
     
            	else
     
            		JOptionPane.showMessageDialog(Tstock.tableau.tablee.getParent(), "  Impression de " + titref.getText() +" a été annulé", "Impression", JOptionPane.INFORMATION_MESSAGE);
     
        	   } catch (java.awt.print.PrinterException e) {
     
        		   JOptionPane.showConfirmDialog( Tstock.tableau.tablee.getParent(),"   Erreur d'impression", "Erreur", JOptionPane.PLAIN_MESSAGE);         }
     
     
           }

  3. #3
    Membre confirmé Avatar de Tyrael62
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 90
    Par défaut
    J'ai bien regardé ton code mais apparemment il ne m'est d'aucune utilité , le printMode.FIT_WIDTH sert plus à redimensionner la page , et ma valeur booléenne que j'appuie sur annuler , la croix ou ok reste à false.

  4. #4
    Membre confirmé Avatar de Tyrael62
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 90
    Par défaut
    Bon en prenant que ta solution et en excluant la mienne ça fonctionné impec pour lancer et annuler l'impression mais le hic , c'est qu'il me redimensionne mal mon tableau , il ne le prends pas en entier et même en modifiant les marges ça ne change rien.

  5. #5
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Par défaut
    voulez_vous imprimer un JTable !

  6. #6
    Membre confirmé Avatar de Tyrael62
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 90
    Par défaut
    Oui c'est une JTable que je cherche à imprimer,elle s'imprime mais disons pas comme je voudrais.

  7. #7
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Par défaut
    donc essayer ce code en remplacant Tstock.tableau.tablee par ta JTable,

    moi aussi s'imprime pas comme je voudrais ,il s'imprime petite !,

    je joue sur la taille des lignes et colonnes,

  8. #8
    Membre confirmé Avatar de Tyrael62
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 90
    Par défaut
    Finalement , je laisse tombé ta solution , elle me pose pas mal de problème outre le problème de redimensionnement de la JTable , je ne peux lancer plusieurs impressions simultanément.
    Si tu as une autre idée pour palier à mon problème , je suis preneur.
    Avec ma méthode outre le problème avec les boutons qui lance toujours l'impression , j'ai aussi un soucis avec les redimensionnement de mes tableaux.
    Ils se redimensionnent verticalement et horizontalement , jusque là normal mais le hic , c'est comme je dois sortir mes tableaux en mode paysage ça pose un soucis au niveau du redimensionnement verticalement , il me sort mon tableau sur deux pages et j'aimerais que le redimensionnement vertical se cantonne qu'à une seule page , je sais pas si tu vois ce que j'aimerais faire au niveau de mon redimensionnement.
    Je te laisse monde code concernant cette partie , si tu peux m'aider , je t'en serais très reconnaissant.

    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
     
    /** {@docRoot}Gestion impression */		
    		public int print(Graphics g, PageFormat pageFormat, int pageIndex) throws PrinterException {
    			Graphics2D g2 = (Graphics2D)g;
    			g2.setColor(Color.black);
     
    			int fontHeight = g2.getFontMetrics().getHeight();
    			int fontDescent = g2.getFontMetrics().getDescent();
    			//double pageHeight = pageFormat.getImageableHeight()-fontHeight;
     
    			double pageHeight = pageFormat.getImageableHeight();
    			double pageWidth = pageFormat.getImageableWidth();			
    			//double pageHeight = pageFormat.getHeight();
    			//double pageWidth = pageFormat.getWidth();
    			double tableWidth = (double)grille.getColumnModel().getTotalColumnWidth();
    			double scale = 1;
     
    			if (tableWidth >= pageWidth)
    				scale = pageWidth / tableWidth;
     
    			double headerHeightOnPage = grille.getTableHeader().getHeight()*scale;
    			double tableWidthOnPage = tableWidth * scale;
    			double oneRowHeight = (grille.getRowHeight() + (grille.getRowMargin()+1))*scale;
    			int numRowsOnAPage = (int)((pageHeight-headerHeightOnPage)/ oneRowHeight);
    			double pageHeightForTable = oneRowHeight* numRowsOnAPage;
    			int totalNumPages = (int)Math.ceil(((double)grille.getRowCount())/ numRowsOnAPage);
    			if (pageIndex >= totalNumPages)	return Printable.NO_SUCH_PAGE;
    			g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
    			g2.drawString("Page: " + (pageIndex+1),(int)pageWidth/2-35, (int)(pageHeight+ fontHeight- fontDescent));
    			g2.translate(0f, headerHeightOnPage);
    			g2.translate(0f, -pageIndex*pageHeightForTable);
     
    		if (pageIndex + 1 == totalNumPages)	{
    			int lastRowPrinted = numRowsOnAPage*pageIndex;
    			int numRowsLeft = grille.getRowCount()-lastRowPrinted;
    			g2.setClip(0, (int)(pageHeightForTable*pageIndex),(int)Math.ceil(tableWidthOnPage),(int)Math.ceil(oneRowHeight* numRowsLeft));	}
    			else {
    			g2.setClip(0, (int)(pageHeightForTable*pageIndex),(int)Math.ceil(tableWidthOnPage),(int)Math.ceil(pageHeightForTable));}
     
    			g2.scale(scale, scale);
    			grille.paint(g2);
    			g2.scale(1/scale, 1/scale);
    			g2.translate(0f, pageIndex*pageHeightForTable);
    			g2.translate(0f, -headerHeightOnPage);
    			g2.setClip(0, 0,(int)Math.ceil(tableWidthOnPage),(int)Math.ceil(headerHeightOnPage));
    			g2.setClip(0, 0,(int)Math.ceil(tableWidthOnPage),0);
    			g2.scale(scale, scale);
    			return Printable.PAGE_EXISTS;	}

  9. #9
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 137
    Par défaut
    Salut Tyrael62,

    oui j'ai compri ton problème ,et j'aime bien vous aidez mais j'ai jamais

    travaillé avec ce que vous avez fait dans ton code .

    voici un code pas testé sur l'impression telechargé , j'espère que ça va vou

    aidez un peu
    Fichiers attachés Fichiers attachés

  10. #10
    Membre confirmé Avatar de Tyrael62
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 90
    Par défaut
    J'ai testé le code et il ne fonctionne pas :s

Discussions similaires

  1. [WD17] Problème avec apercu avant impression
    Par ellodidier dans le forum WinDev
    Réponses: 1
    Dernier message: 11/04/2014, 21h28
  2. [WD-2003] Problème avec une fonction impression
    Par Myogtha dans le forum VBA Word
    Réponses: 6
    Dernier message: 06/04/2009, 19h41
  3. MFC Problème avec lancement du bouton F5
    Par mqsi dans le forum MFC
    Réponses: 1
    Dernier message: 05/02/2008, 20h52
  4. Problème avec une macro impression
    Par Border_xls dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/11/2007, 16h18
  5. problème avec la boite de dialog d'impression
    Par hrp dans le forum C++Builder
    Réponses: 4
    Dernier message: 26/01/2005, 17h30

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