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

Interfaces Graphiques en Java Discussion :

Impression en Java


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 15
    Points : 17
    Points
    17
    Par défaut Impression en Java
    Bonjour! j'ai un soucis, je n'arrive pas à imprimer sur plusieurs page en java


    Code java : 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
    public class Impression {
        PrinterJob printer;
        public void printList(int selectedIndex){
     
     
     
            printer = PrinterJob.getPrinterJob();
     
           // printer.setPrintable(new Printer(option));
            printer.setPrintable(new Printer());
            printer.setJobName("liste des eleves ");
            if(!printer.printDialog()){
     
                return;
            }
            try{
                printer.setCopies(12);
                printer.print();
     
            }catch(Exception ex){
             System.out.println(ex.getMessage());
     
     
            }
        }
     
     
         public class Printer implements Printable {
     
     
     
              public Printer() {
     
     
            }
     
     
            @Override
            public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {
                if(pageIndex > 0)
                    return (NO_SUCH_PAGE);
                Graphics2D g2d = (Graphics2D)graphics;
                Font titleF = new Font("Goudy Old Style", Font.BOLD, 17);
                Font valueF = new Font("Goudy Old Style", Font.PLAIN, 14);
                Color Blue = new Color(26,175,228);
                //ImageIcon icon = new ImageIcon(getClass().getResource("/images/logo_uds.JPG"));
                g2d.rotate(-Math.PI/24);
                g2d.drawImage(icon.getImage(), 3, 15, null);
                g2d.rotate(Math.PI/24);
                GradientPaint gp = new GradientPaint(150, 100, Blue, 70, 70, Color.LIGHT_GRAY);
                g2d.setPaint(gp);
                g2d.setFont(new Font("Goudy Old Style", Font.PLAIN, 36));
                g2d.drawString("LYCEE TECHNIQUE DE GALIM", 50, 50);
                g2d.setFont(titleF);
     
                g2d.drawString(" Liste Des Eleves de la    "+infoClassSelected, 10, 150);
                g2d.drawString("Année scolaire:", 10, 175);
                g2d.drawString("Enseignants :", 10, 200);
                g2d.setColor(Color.BLACK);
                g2d.setFont(valueF);
     
                jtable.print(g2d) //mon tableur qui contient plus de 60 lignes 
     
     
                return PAGE_EXISTS;
            }
        }
     
         }

    voici ma question. quand j'imprime, ça imprime seulementune partie de mon jtable je pense que quand la feuille est plaine , le reste n'est plus imprimer, comment faire de maniere quand la page fini que ça continu dans la page suivante?
    s'il vous plait aidez moi

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Le paramètre pageIndex de la méthode print() sert à imprimer plusieurs pages. La méthode print() est rappelée avec un pageIndex incrémenté à chaque fois que l'appel précédent a retourné PAGE_EXISTS. Lorsque la méthode est appelée avec un pageIndex supérieur au nombre de pages à imprimer, on retourne tout de suite NO_SUCH_PAGE. Ou dit autrement, tant que la méthode print() retourne PAGE_EXISTS, la méthode sera réappelée avec un pageIndex incrémenté de 1.

    Une manière simple de gérer ça est
    • de déterminer la taille de ce qui doit être imprimé, et de le diviser en rectangles, correspondant à des pages (avec pageFormat)
    • de déterminer la zone de ce qui a déjà été imprimé, soit un assemblage (union) de rectangles, avec pageIndex
    • de déterminer si tout a été imprimé ou pas
      • de retourner NO_SUCH_PAGE si on a déjà tout imprimé
      • de faire une translation (vers la gauche et le haut) correspondant à la position du rectangle correspondant à la page d'index pageIndex (avec la méthode translate de Graphics), et tout redessiner, et de retourner PAGE_EXISTS.


    Après tu pourras éventuellement optimiser l'impression :
    • au lieu d'afficher tout à chaque appel de print(), ne dessiner que ce qui est en intersection avec le rectangle de la page en cours d'impression ;
    • de déterminer la taille de ce qui doit être imprimé lorsque pageIndex vaut 0, et de le mémoriser pour les appels suivants (dans une variable de classe) ;


    Éventuellement, ajouter du clipping pour éviter du recouvrement aux marges et pour gérer les marges.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    Salut! merci pour ta réponse,mon problème est que j'ai mes donné dans une JTable mais comment diviser en rectangle comme vous le dite?

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Si tu veux que la jtable soit correctement répartie entre plusieurs pages (sans que les colonnes soit à cheval entre plusieurs pages, par exemple), il faut plutôt procéder comme indiqué ici. Sinon, il te faut gérer toi-même le layout, en parcourant lignes et colonnes, en déterminant les dimensions, et leurs positions, en déduire leur répartition sur les différentes pages, ce qui te permettra de connaitre le nombre de pages nécessaires pour l'imprimer, etc, en gros ce que font les méthodes utilisées dans le tutoriel d'Oracle.
    Si tu souhaites juste l'imprimer comme un rectangle, sans se préoccuper du fait que les colonnes et lignes soient coupées, il suffit de découper le rectangle correspondant aux bounds de la jtable en rectangles.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    s'il vous plait je ne suis pas tres fort en java. un exemple de code pouvait bien m'aider .merci

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Découper un rectangle en rectangle n'est pas un problème java, mais si ta maîtrise de ce langage est limitée, je te conseille alors de suivre la méthode standard plutôt que de faire ta propre impression.

    La méthode standard est bien décrite avec des exemples de code sur le tutoriel oracle dont je t'ai donné le lien. Peut-être le fait que les liens ne soient pas rendus dans un style différent du reste du texte t'a empêché de le voir. Je te le redonne donc : How to Print Tables.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    Bonjour ! en fait j'ai envie d'imprimer un relevé de note sur lequel j'aurai un entete (comme ceci: république du Cameroun, Ministre des enseignements secondaire,Lycée technique de Galim,liste des elèves de la classe de terminale,relevé de note) je ne sais pas comment insérer d'abord cet entete avent de tel maniere qu'en faisant un simple print sur ma table tous soit imprimer

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Regardes l'exemple TablePrintDemo3 dans le tutoriel dont je t'ai donné le lien : dans cet exemple, on affiche des images autour de la JTable. Dans ton cas, à la place des images autour, c'est un texte au dessus, mais ce n'est pas très différent. Éventuellement il te faut déterminer l'espacement pris par ton entête, ce que tu peux faire en récupérant l'instance de FontMetrics sur le contexte graphique de ton impression (l'objet de classe Graphics passé en paramètre de la méthode print) et en appelant ensuite la méthode getStringBounds(), après avoir affecté la police : comme tu connais les coordonnées x et y du dernier texte que tu affiches (dernier drawString), tu peux en déduire la hauteur complète que prend ton entête (dans l'exemple TablePrintDemo3, en ajoutant éventuellement une petite marge pour pas que la JTable soit collée au texte. Tu verras que l'impression proprement dîte de la JTable est faite par délégation en passant un format de papier modifié, réduit justement pour ne couvrir que la partie du papier qui n'est pas couverte par une entête, pied de page, marges, etc...).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  9. #9
    Membre actif Avatar de kalina
    Femme Profil pro
    Développeur Java
    Inscrit en
    Avril 2009
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2009
    Messages : 220
    Points : 293
    Points
    293
    Par défaut
    Bonjour,
    moi j'ai toujours utilisé ce bout de code pour imprimer mes jTables même s'il s'étalent sur plusieurs pages:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     MessageFormat header = new MessageFormat("MonEntête");
            MessageFormat footer = new MessageFormat("                          Page {0,number,integer}             ");
     
            try {
                jTable1.print(JTable.PrintMode.FIT_WIDTH, header,footer);
            } 
            catch (java.awt.print.PrinterException e) {
    		new Erreur("Cannot print %s%n "+ e.getMessage()).setVisible(true);
    		}
    le seule problème c'est qu'au jour d'aujourd'hui, je n'ai pas trouvé le moyen pour imprimer plus d'une ligne pour l'entête! et c'est vrai que c'est très embêtant.
    bon courage!

  10. #10
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Pour ma part l'impression en java n’est pas très fiable je préfère utiliser des outil de génération des rapports pour tout ce qui est impression
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

  11. #11
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    En quoi l'impression java ne serait-elle pas fiable ? Elle a toujours très bien fonctionné : enfin, je n'ai jamais eu de problème, personnellement. Ça peut demander du travail selon ce qu'on cherche à imprimer. Mais pas forcément plus qu'avec une api de reporting, surtout si c'est juste pour imprimer une JTable, et on peut s'aider d'API spécifiques parfois.

    A noter que les API pure java de reporting se base forcément sur l'impression java.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  12. #12
    Membre actif
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Août 2012
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2012
    Messages : 406
    Points : 235
    Points
    235
    Par défaut
    Citation Envoyé par joel.drigo Voir le message
    En quoi l'impression java ne serait-elle pas fiable ? Elle a toujours très bien fonctionné : enfin, je n'ai jamais eu de problème, personnellement. Ça peut demander du travail selon ce qu'on cherche à imprimer. Mais pas forcément plus qu'avec une api de reporting, surtout si c'est juste pour imprimer une JTable, et on peut s'aider d'API spécifiques parfois.

    A noter que les API pure java de reporting se base forcément sur l'impression java.
    Désolé j'ai donc du mal exprimer mes propos je voulais simplement dire qu'avec les outils de reporting c'est plus simple
    La force d'un programmeur ne réside pas dans le fait qu'il écrive des codes puissants mais dans sa capacité à les maintenir!!!

Discussions similaires

  1. Impression en JAVA
    Par maverick56 dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 23/10/2007, 23h15
  2. Impression sous java
    Par nounowa dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 12/08/2007, 23h57
  3. impression sous java
    Par lauloune dans le forum Langage
    Réponses: 1
    Dernier message: 18/01/2007, 15h49
  4. Pb d'impression en java
    Par souraf dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 28/06/2006, 15h22

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