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 :

[Débutant] Imprimer une fenetre en java


Sujet :

AWT/Swing Java

  1. #1
    yup
    yup est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 12
    Points
    12
    Par défaut [Débutant] Imprimer une fenetre en java
    Bonjour,

    Je suis debutant en programmation, j ai cherche dans le faq et les cours qu il y a sur ce site, n ayant rien trouve je me permet de vous demander de m aider.
    Je dois imprimer un fenetre dans mon logiciel, j'ai trouve un code pour l imprimer mais la largeur de la fenetre et plus grande que la feuille donc j ai qu un quart de la fenetre sur la feuille imprimé.

    Voici le code que j utilise pour imprimer ma page:

    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
    [i]public class PrintUtilities implements Printable {
      private Component componentToBePrinted;
     
      public static void printComponent(Component c) {
        new PrintUtilities(c).print();
      }
     
      public PrintUtilities(Component componentToBePrinted) {
        this.componentToBePrinted = componentToBePrinted;
      }
     
      public void print() {
        PrinterJob printJob = PrinterJob.getPrinterJob();
        printJob.setPrintable(this);
        if (printJob.printDialog())
          try {
            printJob.print();
          } catch(PrinterException pe) {
            System.out.println("Error printing: " + pe);
          }
      }
     
      public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
        if (pageIndex > 0) {
          return(NO_SUCH_PAGE);
        } else {
          Graphics2D g2d = (Graphics2D)g;
          g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
          disableDoubleBuffering(componentToBePrinted);
          componentToBePrinted.paint(g2d);
          enableDoubleBuffering(componentToBePrinted);
          return(PAGE_EXISTS);
        }
      }
     
      /** The speed and quality of printing suffers dramatically if
       *  any of the containers have double buffering turned on.
       *  So this turns if off globally.
       *  @see enableDoubleBuffering
       */
      public static void disableDoubleBuffering(Component c) {
        RepaintManager currentManager = RepaintManager.currentManager(c);
        currentManager.setDoubleBufferingEnabled(false);
      }
     
      /** Re-enables double buffering globally. */
     
      public static void enableDoubleBuffering(Component c) {
        RepaintManager currentManager = RepaintManager.currentManager(c);
        currentManager.setDoubleBufferingEnabled(true);
      }
    }[/i]
    Je suis sure qu il faut changer quelque chose dans la methode public int print(Graphics g, PageFormat pageFormat, int pageIndex)

    mais je sais pas quoi, si il y a quelqu un qui pourrait m aider ca m arrangerer enormement

    Merci

  2. #2
    Membre actif
    Inscrit en
    Avril 2004
    Messages
    238
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 238
    Points : 265
    Points
    265
    Par défaut
    Salut, faut que tu redimensionne ton image pour qu'elle tienne sur une seule page, pour ca utilise la methode scale(x,y) qui fait un "zoom".
    Faut que tu recupere la taille de ta feuille et la taille de ton composant, tu fais le rapport entre les deux pour trouver l'echelle pour le zoom et tu l'applique.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    public int print(Graphics g, PageFormat pageFormat, int pageIndex) { 
    if (pageIndex > 0) { 
    return(NO_SUCH_PAGE); 
    } else { 
    Graphics2D g2d = (Graphics2D)g; 
    g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY()); 
    g2d.scale(echelleX,echelleY);
    disableDoubleBuffering(componentToBePrinted); 
    componentToBePrinted.paint(g2d); 
    enableDoubleBuffering(componentToBePrinted); 
    return(PAGE_EXISTS); 
    } 
    }
    Voila

    P.S. :
    "Quand le sage montre la lune,
    L'idiot regarde le doigt."

  3. #3
    yup
    yup est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Merci je vais tester ce que tu viens de me dire.

    desole d avoir oublie la balise [code] j essayerai de po faire le meme oublie la prochaine fois.

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

Discussions similaires

  1. affichage d'un fichier à l'intérieur d'une fenetre en java?
    Par midoscofield dans le forum Documents
    Réponses: 3
    Dernier message: 04/05/2009, 02h43
  2. Réponses: 2
    Dernier message: 27/04/2009, 10h20
  3. Imprimer une image avec java
    Par adilou1981 dans le forum Langage
    Réponses: 5
    Dernier message: 04/08/2006, 15h23
  4. [débutant] Ecouter une fenetre étrangère à l'appli
    Par orelero dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 19/01/2005, 16h02
  5. [Débutant] Maximiser une fenetre
    Par dam_moreyllo dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 21/05/2004, 09h58

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