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 :

Pb d'impression en java


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Par défaut Pb d'impression en java
    Salut,
    j'ai un pb ds l'impression en java.le pb existe dans la position du jTable et les chaines de caracteres que j'aime imprimer.voila mon code :
    **une methode int print(Graphics g, PageFormat pageFormat, int pageIndex):

    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
      public int print(Graphics g, PageFormat pageFormat, int pageIndex)throws PrinterException {
            
            Graphics2D g2 = (Graphics2D)g;
            g2.setColor(Color.black);
            int i=0;
            int fontHeight = g2.getFontMetrics().getHeight();
            int fontDescent = g2.getFontMetrics().getDescent();
            
    // laisser de l'espace pour le numero de page
            double pageHeight = pageFormat.getImageableHeight() - fontHeight;
            double pageWidth = pageFormat.getImageableWidth();
            double tableWidth = (double)tableView.getColumnModel().getTotalColumnWidth();
            double scale = 1;
            if (tableWidth >= pageWidth) {
                scale = pageWidth / tableWidth;
            }
            while (tableView.getValueAt(i,0) != null)
                i++;
            double headerHeightOnPage = tableView.getTableHeader().getHeight()*scale;
            double tableWidthOnPage = tableWidth * scale;
            double oneRowHeight = (tableView.getRowHeight() + tableView.getRowMargin())*scale;
            int numRowsOnAPage = (int)((pageHeight-headerHeightOnPage) / oneRowHeight);
            double pageHeightForTable = oneRowHeight * numRowsOnAPage;
            int totalNumPages = (int)Math.ceil(((double)i) / numRowsOnAPage);
            if (pageIndex >= totalNumPages)
                return NO_SUCH_PAGE;
            
            g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
    // en bas au centre
            g2.drawString("Page: " + (pageIndex +1),(int)pageWidth/2 - 35, (int)(pageHeight + fontHeight - fontDescent));
            g2.translate(0f, headerHeightOnPage);
            g2.translate(0f, -pageIndex*pageHeightForTable);
    // si cette partie de la page est plus petite
    // que la taille disponible, alors découper les contours appropriés
            if (pageIndex + 1 == totalNumPages) {
                int lastRowPrinted = numRowsOnAPage * pageIndex;
                int numRowsLeft = i - lastRowPrinted;
                //g2.setClip(0, (int)(pageHeightForTable * pageIndex),(int)Math.ceil(tableWidthOnPage),(int)Math.ceil(oneRowHeight * numRowsLeft));
                g2.setClip(0, 0,(int)Math.ceil(tableWidthOnPage),(int)Math.ceil(oneRowHeight * numRowsLeft));
                
            }
    // sinon découper la zone disponible toute entière
            else {
                g2.setClip(0, (int)(pageHeightForTable * pageIndex),(int)Math.ceil(tableWidthOnPage),(int)Math.ceil(pageHeightForTable));
            }
            g2.scale(scale, scale);
            tableView.paint(g2);
    // dessiner les entêtes en haut
            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.scale(scale, scale);
            tableView.getTableHeader().paint(g2);
            /****************************************/
            
            
            g2.scale(1/scale,1/scale);
            g2.translate(0f, fontHeight/2+50);
            g2.setClip(0, 0,(int) Math.ceil(tableWidthOnPage),(int)Math.ceil(headerHeightOnPage));
            g2.scale(scale,scale);
            g2.drawString("YYYYYYYYYY",0f,fontHeight-fontDescent);
            
            g2.translate(0f, -headerHeightOnPage-20);
            g2.setClip(0, 0,(int) Math.ceil(tableWidthOnPage),(int)Math.ceil(headerHeightOnPage+10));
            g2.drawString("XXXXXXXXX",0f,fontHeight-fontDescent);
              
            
            /****************************************/
            
    
            return Printable.PAGE_EXISTS;
            
            
        }
    
    
    **une methode void print():
    
        public void print() {
            printJob.setPrintable(this, pageFormat);
            try {
                if(printJob.printDialog()) {
                    Paper paper = pageFormat.getPaper();
                    Paper save = pageFormat.getPaper();
                    paper.setImageableArea(paper.getImageableX(), paper.getImageableY(), paper.getWidth() - (paper.getImageableX()+ 47.0), paper.getHeight() - (paper.getImageableY()+ 47.0));
                    pageFormat.setPaper(paper);
                    printJob.print();
                    pageFormat.setPaper(save);
                }
            } catch(PrinterException pe) {
                System.out.println("Erreur lors de l'impression du document: " + toString());
            }
        }
    Le pb est que je veux imprimer la chaine XXXXXXXXX et puis retourne à la ligne et imprimer la chaine YYYYYYYYYY et enfin retour à la ligne et impression du jTable .
    par ce code il ya superposition du chaine XXXXXXXXXX et du jTable

    Aidez moi SVP

  2. #2
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    Si tu pouvais reposter ton code en utilisant les balises codes (la touche "#" lors de l'édition de ton post) ça serait beaucoup plus agréable à lire (indentation respectée), et je pense que beaucoup plus de personnes se plongeraient sur ton problème...

  3. #3
    Membre éclairé
    Avatar de seiryujay
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 950
    Par défaut
    J'ai du mal à me repérer avec tes translations négatives...
    Ce serait beaucoup plus simple si tu imprimais de hat en bas, je pense...

  4. #4
    Membre du Club
    Inscrit en
    Mars 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Par défaut
    Personne ne peut m'aider

Discussions similaires

  1. Problème d'impression en java
    Par jliog dans le forum Général Java
    Réponses: 4
    Dernier message: 22/04/2008, 17h07
  2. Impression en JAVA
    Par maverick56 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 23/10/2007, 23h15
  3. Impression sous java
    Par nounowa dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 12/08/2007, 23h57
  4. impression sous java
    Par lauloune dans le forum Langage
    Réponses: 1
    Dernier message: 18/01/2007, 15h49

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