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 :

[debutant] imprimer avec une mise en page spécifique


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Par défaut [debutant] imprimer avec une mise en page spécifique
    bonjour.
    Actuellement je developpe une petite base donnée avec accès dessus à partir de l'interface graphique de netbeans 5.5. J aimerai savoir comment il serait possible d'imprimer mes données (récupérées dans les Jtextfield après une recherche) avec une mise en page choisie et spécifiée (je dois respecter certaines normes) après un clique sur un jbutton "imprimer" de l'interface graphique.
    Merci

  2. #2
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    ah tu peux l'envoyer sur une feuille excel et/ou pdf

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Par défaut
    Avec quelle méthode? comment spécifier la mise en page?
    Merci

  4. #4
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    sinon (j'ai jamais fait d'impression, mais ça me paraît pas trop mal), tu peux créer un JPanel de dimensions fixes sans layout (setSize, setLayout). Tu y ajoutes des JLabels positionnés selon tes soins (avec setLocation ou setBounds), et tu l'imprimes selon la méthode décrite en FAQ.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Par défaut
    merci je vais essayer pour voir

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Par défaut
    Merci le resultat est sympa! Mais j'aimerai savoir comment puis-je faire également pour envoyer le tout sur une feuille excel, word ou tout simplement wordpad pour un résultat plus professionnel?
    désolé je ne trouve pas ma réponse dans la FAQ, si quelqu'un pouvait me diriger sur cette derniere à la bonne page ou me l'expliquer ce serait aimable
    merci

  7. #7
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Ah, oui, l'inconvénient du placement absolu, c'est que ça donne parfois des résultats un peu brouillons. Tu peux aussi utiliser un Layout, mais il se peut que tu aies des surprises (j'ai jamais vraiment fait).

    Pour l'exportation, un petit tour sur google te renseignera. J'ai entendu parler de POI (mais apparemment ça ne fonctionne qu'avec Word), mais il paraît que tu peux utiliser les librairies java d'open office.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Par défaut
    Je ne peux pas utiliser word ni open office en fait puisque ce n'est pas sur que l'exploitant pour qui je developpe le petit soft les ait. Je pensais donc à wordpad... Bon aller, comme on dit dans ma promo: "google est ton ami " j'y vais de ce pas!

  9. #9
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Ah j'avais pas vu Wordpad ! Je crois me souvenir que l'api standard gère le RTF (javax.swing.text.rtf.RTFEditorKit).
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Par défaut
    C'est bon j'ai trouvé! Avec un filewriter() qui est tout bête à utiliser.
    Merci de votre aide

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Par défaut
    Je up le topic pour une autre question.
    Bon alors je suis désolé je reviens vous embêter avec mes impressions! alors voici mon problème:
    En fait j'imprime directement une fenêtre graphique (JTextArea) dans laquelle j'importe des caractères. Le problème c'est que lorsque le texte est très long il "passe" sur une deuxième page qui elle seule est imprimée, sans la première! Comment puis-je faire pour imprimer les 2?
    Merci

  12. #12
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 913
    Billets dans le blog
    54
    Par défaut
    Cela depend de la maniere dont tu imprimes. Si tu passes par un Printable, tu dois lors du premier appel a print() faire ta mise en page, c'est a dire calculer le nombre de page et les cadrage pour chaque page en fonction des dimensions de la surface d'impression et des dimension de ton composant.

    Puis a l'impression de chaque page (la methode print() est appelle plusieurs fois) tu dois faire les decalage necessaires (en general uniquement des translate() et le plus souvent uniquement sur l'axe Y) et la mise en place du clip necessaire sur le Graphics pour n'imprimer que la partie voulue. Cela va te demander un peu plus de calculs, quelques chose du genre (a tester) :

    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
    public class MyPrintable implements Printable {
     
      private JTextArea area;
     
      private boolean layoutDone = false;
     
      private int pageNumber = -1;
     
      private Dimension pageSize;
     
      [...]
     
      /** {@inheritDoc}
      */
      public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)  {
        if (!layoutDone) {
          // Calculer le nombre de page et les dimensions de chaque page/vue sur le composant en fonction du pageFormat et des dimensions des zones imprimables.
          pageNumber = ...
          pageSize = ...
          layoutDone = true;
        }
        if (pageIndex >= pageNumber) {
          return NO_SUCH_PAGE;
        }
        Graphics g = graphics.create(pageFormat.getImageableX(), pageFormat.getImageableY(), pageFormat.getImageableWidth(), pageFormat.getImageableHeight());
        try {
          int x = 0;
          int y = pageIndex*pageSize.height;
          g.translate(x, -y);
          // Seule la partie voulue sera dessinee.
          area.print(g);
        }
        finally {
          g.dispose();
        }
        return PAGE_EXISTS;
      }
    }
    Astuce : plutot que de gacher du papier dans les multiples tests de deboggage du Printable, tu peux t'arranger pour generer une serie d'images (une pour chaque page) que tu sauvegardera (via ImageIO) plutot que de toute betement tout envoyer sur l'imprimante.

    ! Attention cela ne t'empechera pas d'avoir parfois une ligne qui s'etale sur deux pages. Il te faudra alors chercher a imprimer ton texte avec d'autres outils plus adequat comme par exemple le TextLayout ou des trucs genre BoxView.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Par défaut
    Merci je vais essayer ça!
    Mais pourquoi initialiser PageNumber à -1?
    Pour pageSize il faut mettre le nombre de lignes définissant une page?
    PageIndex correspond au nombre de page?
    Merci de m'aider

  14. #14
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 913
    Billets dans le blog
    54
    Par défaut
    C'était juste histoire de l'initialiser à quelque chose ; c'est à toi de le calculer en fonction de la taille des trucs à imprimer lors de ta mise en page initiale.
    pageIndex correspond au numéro de la page courante (de 0 à pageNumber-1) que tu vas imprimer. La fonction print() va en effet être appelée plusieurs fois d'affilée jusqu'à faire l'ensemble des page. Il est même possible qu'elle soit appellée 2 fois pour chaque page.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Par défaut
    Merci!
    parcontre je n'arrive pas à trouver la syntaxe pour pageSize. c'est un Dimension et je ne le connais pas bien (pas dans la javaDoc ). exemple simple:
    Si je veux 100 en largeur et 100 en hauteur.
    pageSize = ?

  16. #16
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 913
    Billets dans le blog
    54
    Par défaut
    Pourtant c'est du grand classique qu'on rencontre courrament en AWT et Swing.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import java.awt.Dimension;
     
    Dimension pageSize = new Dimension (100, 100);
    System.out.println(pageSize.width + " " + pageSize.height);
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Par défaut
    Merci je vais esssayé ça.

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Par défaut
    Petit problème:
    graphics.create ne peut avoir que des int en paramètre alors que les pageFormat sont des double. que faire?
    merci

  19. #19
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 913
    Billets dans le blog
    54
    Par défaut
    Caster en int tout simplement
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Faire une mise en page comme avec des frames
    Par kelyly dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 13/05/2010, 19h42
  2. Réponses: 1
    Dernier message: 07/08/2009, 11h42
  3. Réponses: 1
    Dernier message: 05/05/2006, 11h36
  4. Réponses: 2
    Dernier message: 11/04/2006, 20h09
  5. [debutant]Problème avec une requete ....
    Par MichMich29 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 27/07/2005, 18h19

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